Skip to content

Commit

Permalink
refactor: use fetch from and get_sender_email function
Browse files Browse the repository at this point in the history
  • Loading branch information
ruchamahabal committed Nov 1, 2023
1 parent ab65da1 commit b2ba781
Show file tree
Hide file tree
Showing 6 changed files with 49 additions and 35 deletions.
36 changes: 22 additions & 14 deletions hrms/controllers/employee_reminders.py
Original file line number Diff line number Diff line change
Expand Up @@ -61,8 +61,7 @@ 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 ""
sender_email = get_sender_email()
email_header = _("Holidays this Month.") if frequency == "Monthly" else _("Holidays this Week.")
frappe.sendmail(
sender=sender_email,
Expand All @@ -87,11 +86,12 @@ def send_holidays_reminder_in_advance(employee, holidays):
# ------------------
def send_birthday_reminders():
"""Send Employee birthday reminders if no 'Stop Birthday Reminders' is not set."""
hr_settings = frappe.get_single("HR Settings")
to_send = int(hr_settings.send_birthday_reminders)

to_send = int(frappe.db.get_single_value("HR Settings", "send_birthday_reminders"))
if not to_send:
return
sender = hr_settings.sender_email if hr_settings.sender else ""

sender = get_sender_email()
employees_born_today = get_employees_who_are_born_today()

for company, birthday_persons in employees_born_today.items():
Expand All @@ -100,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(sender, recipients, reminder_text, birthday_persons, message)
send_birthday_reminder(recipients, reminder_text, birthday_persons, message, sender)

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(sender, person_email, reminder_text, others, message)
send_birthday_reminder(person_email, reminder_text, others, message, sender)


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


def send_birthday_reminder(sender, recipients, reminder_text, birthday_persons, message):
def send_birthday_reminder(recipients, reminder_text, birthday_persons, message, sender=None):
frappe.sendmail(
sender=sender,
recipients=recipients,
Expand Down Expand Up @@ -206,11 +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"""
hr_settings = frappe.get_single("HR Settings")
to_send = int(hr_settings.send_work_anniversary_reminders)
to_send = int(frappe.db.get_single_value("HR Settings", "send_work_anniversary_reminders"))
if not to_send:
return
sender = hr_settings.sender_email if hr_settings.sender else ""

sender = get_sender_email()
employees_joined_today = get_employees_having_an_event_today("work_anniversary")

message = _("A friendly reminder of an important date for our team.")
Expand All @@ -223,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(sender, recipients, reminder_text, anniversary_persons, message)
send_work_anniversary_reminder(recipients, reminder_text, anniversary_persons, message, sender)

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(sender, person_email, reminder_text, others, message)
send_work_anniversary_reminder(person_email, reminder_text, others, message, sender)


def get_work_anniversary_reminder_text(anniversary_persons: list) -> str:
Expand Down Expand Up @@ -267,7 +267,11 @@ def get_pluralized_years(years):


def send_work_anniversary_reminder(
sender, recipients, reminder_text, anniversary_persons, message
recipients,
reminder_text,
anniversary_persons,
message,
sender=None,
):
frappe.sendmail(
sender=sender,
Expand All @@ -281,3 +285,7 @@ def send_work_anniversary_reminder(
),
header=_("Work Anniversary Reminder"),
)


def get_sender_email() -> str | None:
return frappe.db.get_single_value("HR Settings", "sender_email")
1 change: 0 additions & 1 deletion hrms/hr/doctype/hr_settings/hr_settings.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@

frappe.ui.form.on('HR Settings', {
refresh: function (frm) {
frm.add_fetch("sender", "email_id", "sender_email");
frm.set_query("sender", () => {
return {
filters: {
Expand Down
15 changes: 11 additions & 4 deletions hrms/hr/doctype/hr_settings/hr_settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -12,13 +12,14 @@
"column_break_9",
"retirement_age",
"reminders_section",
"sender",
"sender_email",
"column_break_11",
"send_work_anniversary_reminders",
"send_birthday_reminders",
"send_holiday_reminders",
"frequency",
"column_break_hyec",
"sender",
"sender_email",
"leave_and_expense_claim_settings",
"send_leave_notification",
"leave_approval_notification_template",
Expand Down Expand Up @@ -256,18 +257,23 @@
"options": "Email Account"
},
{
"depends_on": "eval:doc.sender;",
"depends_on": "eval:doc.sender",
"fetch_from": "sender.email_id",
"fieldname": "sender_email",
"fieldtype": "Data",
"label": "Sender Email",
"read_only": 1
},
{
"fieldname": "column_break_hyec",
"fieldtype": "Column Break"
}
],
"icon": "fa fa-cog",
"idx": 1,
"issingle": 1,
"links": [],
"modified": "2023-10-23 15:40:06.249322",
"modified": "2023-11-01 11:06:31.329718",
"modified_by": "Administrator",
"module": "HR",
"name": "HR Settings",
Expand All @@ -285,5 +291,6 @@
],
"sort_field": "modified",
"sort_order": "ASC",
"states": [],
"track_changes": 1
}
21 changes: 10 additions & 11 deletions hrms/payroll/doctype/payroll_settings/payroll_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('Payroll Settings', {
refresh: function (frm) {
frm.set_query("sender", () => {
return {
filters: {
enable_outgoing: 1,
},
};
});
},

encrypt_salary_slips_in_emails: function(frm) {
let encrypt_state = frm.doc.encrypt_salary_slips_in_emails;
frm.set_df_property('password_policy', 'reqd', encrypt_state);
Expand All @@ -16,15 +26,4 @@ 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,
},
};
});

}
});
9 changes: 5 additions & 4 deletions hrms/payroll/doctype/payroll_settings/payroll_settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -159,16 +159,17 @@
"label": "Consider Marked Attendance on Holidays"
},
{
"depends_on": "eval:doc.email_salary_slip_to_employee;",
"depends_on": "eval:doc.email_salary_slip_to_employee",
"fieldname": "sender",
"fieldtype": "Link",
"label": "Sender",
"options": "Email Account"
},
{
"depends_on": "eval:doc.sender;",
"depends_on": "eval:doc.sender",
"fetch_from": "sender.email_id",
"fieldname": "sender_email",
"fieldtype": "Data",
"fieldtype": "Data",
"label": "Sender Email",
"read_only": 1
}
Expand All @@ -177,7 +178,7 @@
"index_web_pages_for_search": 1,
"issingle": 1,
"links": [],
"modified": "2023-10-23 14:50:34.451546",
"modified": "2023-11-01 13:51:04.225492",
"modified_by": "Administrator",
"module": "Payroll",
"name": "Payroll Settings",
Expand Down
2 changes: 1 addition & 1 deletion hrms/payroll/doctype/salary_slip/salary_slip.py
Original file line number Diff line number Diff line change
Expand Up @@ -1791,7 +1791,7 @@ def email_salary_slip(self):

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

0 comments on commit b2ba781

Please sign in to comment.