fix: removed unnecessary fields from Campaign DocType and other fixes in Email Campaign

This commit is contained in:
Rucha Mahabal 2019-07-22 12:26:52 +05:30
parent 324ab98b99
commit d23a95c06e
2 changed files with 13 additions and 68 deletions

View File

@ -11,38 +11,34 @@ from frappe.core.doctype.communication.email import make
class EmailCampaign(Document): class EmailCampaign(Document):
def validate(self): def validate(self):
self.validate_dates() self.set_date()
#checking if email is set for lead. Not checking for contact as email is a mandatory field for contact. #checking if email is set for lead. Not checking for contact as email is a mandatory field for contact.
if self.email_campaign_for == "Lead": if self.email_campaign_for == "Lead":
self.validate_lead() self.validate_lead()
self.validate_email_campaign_already_exists() self.validate_email_campaign_already_exists()
self.update_status() self.update_status()
def validate_dates(self): def set_date(self):
campaign = frappe.get_doc("Campaign", self.campaign_name) if getdate(self.start_date) < getdate(today()):
frappe.throw(_("Start Date cannot be before the current date"))
#email campaign cannot start before campaign
if campaign.from_date and getdate(self.start_date) < getdate(campaign.from_date):
frappe.throw(_("Email Campaign Start Date cannot be before Campaign Start Date"))
#set the end date as start date + max(send after days) in campaign schedule #set the end date as start date + max(send after days) in campaign schedule
send_after_days = [] send_after_days = []
campaign = frappe.get_doc("Campaign", self.campaign_name)
for entry in campaign.get("campaign_schedules"): for entry in campaign.get("campaign_schedules"):
send_after_days.append(entry.send_after_days) send_after_days.append(entry.send_after_days)
end_date = add_days(getdate(self.start_date), max(send_after_days)) try:
end_date = add_days(getdate(self.start_date), max(send_after_days))
if campaign.to_date and getdate(end_date) > getdate(campaign.to_date): except ValueError:
frappe.throw(_("Email Schedule cannot extend Campaign End Date")) frappe.throw(_("Please set up the Campaign Schedule in the Campaign {0}").format(self.campaign_name))
else:
self.end_date = end_date
def validate_lead(self): def validate_lead(self):
lead_email_id = frappe.db.get_value("Lead", self.recipient, 'email_id') lead_email_id = frappe.db.get_value("Lead", self.recipient, 'email_id')
if not lead_email_id: if not lead_email_id:
frappe.throw(_("Please set an email id for lead communication")) lead_name = frappe.db.get_value("Lead", self.recipient, 'lead_name')
frappe.throw(_("Please set an email id for the Lead {0}").format(lead_name))
def validate_email_campaign_already_exists(self): def validate_email_campaign_already_exists(self):
if frappe.db.get_value("Email Campaign", {"campaign_name": self.campaign_name, "recipient": self.recipient, "status": "In Progress"}): if frappe.db.get_value("Email Campaign", {"campaign_name": self.campaign_name, "recipient": self.recipient, "status": ("in", ["In Progress", "Scheduled"])}):
frappe.throw(_("The Campaign '{0}' already exists for the {1} '{2}'").format(self.campaign_name, self.email_campaign_for, self.recipient)) frappe.throw(_("The Campaign '{0}' already exists for the {1} '{2}'").format(self.campaign_name, self.email_campaign_for, self.recipient))
def update_status(self): def update_status(self):

View File

@ -11,14 +11,6 @@
"campaign", "campaign",
"campaign_name", "campaign_name",
"naming_series", "naming_series",
"from_date",
"column_break1",
"status",
"to_date",
"budget_section",
"currency",
"column_break2",
"budget",
"campaign_schedules_section", "campaign_schedules_section",
"campaign_schedules", "campaign_schedules",
"description_section", "description_section",
@ -55,53 +47,10 @@
"oldfieldtype": "Text", "oldfieldtype": "Text",
"width": "300px" "width": "300px"
}, },
{
"default": "Planned",
"fieldname": "status",
"fieldtype": "Select",
"in_list_view": 1,
"label": "Status",
"options": "\nPlanned\nIn Progress\nCompleted\nCancelled",
"reqd": 1
},
{
"fieldname": "from_date",
"fieldtype": "Date",
"label": "From Date"
},
{
"fieldname": "to_date",
"fieldtype": "Date",
"label": "To Date"
},
{
"fieldname": "column_break1",
"fieldtype": "Column Break"
},
{
"fieldname": "budget",
"fieldtype": "Currency",
"label": "Budget"
},
{ {
"fieldname": "description_section", "fieldname": "description_section",
"fieldtype": "Section Break" "fieldtype": "Section Break"
}, },
{
"fieldname": "currency",
"fieldtype": "Link",
"label": "Currency",
"options": "Currency"
},
{
"fieldname": "column_break2",
"fieldtype": "Column Break"
},
{
"fieldname": "budget_section",
"fieldtype": "Section Break",
"label": "BUDGET"
},
{ {
"fieldname": "campaign_schedules", "fieldname": "campaign_schedules",
"fieldtype": "Table", "fieldtype": "Table",
@ -116,7 +65,7 @@
], ],
"icon": "fa fa-bullhorn", "icon": "fa fa-bullhorn",
"idx": 1, "idx": 1,
"modified": "2019-07-15 17:45:06.168107", "modified": "2019-07-22 12:03:39.832342",
"modified_by": "Administrator", "modified_by": "Administrator",
"module": "Selling", "module": "Selling",
"name": "Campaign", "name": "Campaign",