Merge pull request #17542 from rohitwaghchaure/project_update_statue_emails_sending_frequestly_develop
fix: project update status emails sent frequently
diff --git a/erpnext/projects/doctype/project/project.py b/erpnext/projects/doctype/project/project.py
index 61db3e1..a66fac3 100644
--- a/erpnext/projects/doctype/project/project.py
+++ b/erpnext/projects/doctype/project/project.py
@@ -485,16 +485,17 @@
projects = get_projects_for_collect_progress("Daily", fields)
for project in projects:
- if not check_project_update_exists(project.name, project.get("daily_time_to_send")):
+ if allow_to_make_project_update(project.name, project.get("daily_time_to_send"), "Daily"):
send_project_update_email_to_users(project.name)
def twice_daily_reminder():
fields = ["first_email", "second_email"]
projects = get_projects_for_collect_progress("Twice Daily", fields)
+ fields.remove("name")
for project in projects:
for d in fields:
- if not check_project_update_exists(project.name, project.get(d)):
+ if allow_to_make_project_update(project.name, project.get(d), "Twicely"):
send_project_update_email_to_users(project.name)
def weekly_reminder():
@@ -506,14 +507,19 @@
if current_day != project.day_to_send:
continue
- if not check_project_update_exists(project.name, project.get("weekly_time_to_send")):
+ if allow_to_make_project_update(project.name, project.get("weekly_time_to_send"), "Weekly"):
send_project_update_email_to_users(project.name)
-def check_project_update_exists(project, time):
+def allow_to_make_project_update(project, time, frequency):
data = frappe.db.sql(""" SELECT name from `tabProject Update`
- WHERE project = %s and date = %s and time >= %s """, (project, today(), time))
+ WHERE project = %s and date = %s """, (project, today()))
- return True if data and data[0][0] else False
+ # len(data) > 1 condition is checked for twicely frequency
+ if data and (frequency in ['Daily', 'Weekly'] or len(data) > 1):
+ return False
+
+ if get_time(nowtime()) >= get_time(time):
+ return True
def get_projects_for_collect_progress(frequency, fields):
fields.extend(["name"])