From 097c643a59899b8cb2c913befb71162585290ec0 Mon Sep 17 00:00:00 2001 From: Anupam K Date: Wed, 22 Apr 2020 23:38:42 +0530 Subject: [PATCH] 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