From 097c643a59899b8cb2c913befb71162585290ec0 Mon Sep 17 00:00:00 2001 From: Anupam K Date: Wed, 22 Apr 2020 23:38:42 +0530 Subject: [PATCH 1/2] setting end date in email campaign --- .../doctype/email_campaign/email_campaign.py | 2 +- erpnext/patches.txt | 1 + .../update_end_date_and_status_in_email.py | 26 +++++++++++++++++++ 3 files changed, 28 insertions(+), 1 deletion(-) create mode 100644 erpnext/patches/v12_0/update_end_date_and_status_in_email.py diff --git a/erpnext/crm/doctype/email_campaign/email_campaign.py b/erpnext/crm/doctype/email_campaign/email_campaign.py index 00a4bd1a322..8f60ecf6219 100644 --- a/erpnext/crm/doctype/email_campaign/email_campaign.py +++ b/erpnext/crm/doctype/email_campaign/email_campaign.py @@ -27,7 +27,7 @@ class EmailCampaign(Document): for entry in campaign.get("campaign_schedules"): send_after_days.append(entry.send_after_days) try: - end_date = add_days(getdate(self.start_date), max(send_after_days)) + self.end_date = add_days(getdate(self.start_date), max(send_after_days)) except ValueError: frappe.throw(_("Please set up the Campaign Schedule in the Campaign {0}").format(self.campaign_name)) diff --git a/erpnext/patches.txt b/erpnext/patches.txt index 9461e2df839..dd2705ab6b2 100644 --- a/erpnext/patches.txt +++ b/erpnext/patches.txt @@ -658,3 +658,4 @@ erpnext.patches.v12_0.rename_mws_settings_fields erpnext.patches.v12_0.set_correct_status_for_expense_claim erpnext.patches.v12_0.set_updated_purpose_in_pick_list erpnext.patches.v12_0.repost_stock_ledger_entries_for_target_warehouse +erpnext.patches.v12_0.update_end_date_and_status_in_email diff --git a/erpnext/patches/v12_0/update_end_date_and_status_in_email.py b/erpnext/patches/v12_0/update_end_date_and_status_in_email.py new file mode 100644 index 00000000000..b3753a5e8db --- /dev/null +++ b/erpnext/patches/v12_0/update_end_date_and_status_in_email.py @@ -0,0 +1,26 @@ +from __future__ import unicode_literals +import frappe +from frappe.utils import add_days, getdate, today + +def execute(): + email_campaign = frappe.get_all('Email Campaign') + if not email_campaign: + return + for campaign in email_campaign: + doc = frappe.get_doc("Email Campaign",campaign["name"]) + send_after_days = [] + + camp = frappe.get_doc("Campaign", doc.campaign_name) + for entry in camp.get("campaign_schedules"): + send_after_days.append(entry.send_after_days) + if send_after_days: + end_date = add_days(getdate(doc.start_date), max(send_after_days)) + doc.db_set("end_date", end_date) + today_date = getdate(today()) + if doc.start_date > today_date: + doc.db_set("status", "Scheduled") + elif end_date >= today_date: + doc.db_set("status", "In Progress") + elif end_date < today_date: + doc.db_set("status", "Completed") + frappe.db.commit() \ No newline at end of file From ef7f9c6ecc3557528679dd6a7daea43f95b18ea9 Mon Sep 17 00:00:00 2001 From: Anupam K Date: Thu, 23 Apr 2020 13:45:19 +0530 Subject: [PATCH 2/2] Review changes --- erpnext/patches.txt | 2 +- .../update_end_date_and_status_in_email.py | 26 ------------------- ...e_end_date_and_status_in_email_campaign.py | 24 +++++++++++++++++ 3 files changed, 25 insertions(+), 27 deletions(-) delete mode 100644 erpnext/patches/v12_0/update_end_date_and_status_in_email.py create mode 100644 erpnext/patches/v12_0/update_end_date_and_status_in_email_campaign.py diff --git a/erpnext/patches.txt b/erpnext/patches.txt index dd2705ab6b2..ad02a68faaa 100644 --- a/erpnext/patches.txt +++ b/erpnext/patches.txt @@ -658,4 +658,4 @@ erpnext.patches.v12_0.rename_mws_settings_fields erpnext.patches.v12_0.set_correct_status_for_expense_claim erpnext.patches.v12_0.set_updated_purpose_in_pick_list erpnext.patches.v12_0.repost_stock_ledger_entries_for_target_warehouse -erpnext.patches.v12_0.update_end_date_and_status_in_email +erpnext.patches.v12_0.update_end_date_and_status_in_email_campaign diff --git a/erpnext/patches/v12_0/update_end_date_and_status_in_email.py b/erpnext/patches/v12_0/update_end_date_and_status_in_email.py deleted file mode 100644 index b3753a5e8db..00000000000 --- a/erpnext/patches/v12_0/update_end_date_and_status_in_email.py +++ /dev/null @@ -1,26 +0,0 @@ -from __future__ import unicode_literals -import frappe -from frappe.utils import add_days, getdate, today - -def execute(): - email_campaign = frappe.get_all('Email Campaign') - if not email_campaign: - return - for campaign in email_campaign: - doc = frappe.get_doc("Email Campaign",campaign["name"]) - send_after_days = [] - - camp = frappe.get_doc("Campaign", doc.campaign_name) - for entry in camp.get("campaign_schedules"): - send_after_days.append(entry.send_after_days) - if send_after_days: - end_date = add_days(getdate(doc.start_date), max(send_after_days)) - doc.db_set("end_date", end_date) - today_date = getdate(today()) - if doc.start_date > today_date: - doc.db_set("status", "Scheduled") - elif end_date >= today_date: - doc.db_set("status", "In Progress") - elif end_date < today_date: - doc.db_set("status", "Completed") - frappe.db.commit() \ No newline at end of file diff --git a/erpnext/patches/v12_0/update_end_date_and_status_in_email_campaign.py b/erpnext/patches/v12_0/update_end_date_and_status_in_email_campaign.py new file mode 100644 index 00000000000..f6561471de4 --- /dev/null +++ b/erpnext/patches/v12_0/update_end_date_and_status_in_email_campaign.py @@ -0,0 +1,24 @@ +from __future__ import unicode_literals +import frappe +from frappe.utils import add_days, getdate, today + +def execute(): + if frappe.db.exists('DocType', 'Email Campaign'): + email_campaign = frappe.get_all('Email Campaign') + for campaign in email_campaign: + doc = frappe.get_doc("Email Campaign",campaign["name"]) + send_after_days = [] + + camp = frappe.get_doc("Campaign", doc.campaign_name) + for entry in camp.get("campaign_schedules"): + send_after_days.append(entry.send_after_days) + if send_after_days: + end_date = add_days(getdate(doc.start_date), max(send_after_days)) + doc.db_set("end_date", end_date) + today_date = getdate(today()) + if doc.start_date > today_date: + doc.db_set("status", "Scheduled") + elif end_date >= today_date: + doc.db_set("status", "In Progress") + elif end_date < today_date: + doc.db_set("status", "Completed") \ No newline at end of file