[email] many fixes, newsletter, unsubscribe
This commit is contained in:
parent
fd2bf93b50
commit
14ae4c3603
@ -80,6 +80,11 @@ def get_data():
|
||||
"description": _("Manage Sales Person Tree."),
|
||||
"doctype": "Sales Person",
|
||||
},
|
||||
{
|
||||
"type": "doctype",
|
||||
"name": "Newsletter List",
|
||||
"description": _("Newsletter Mailing List"),
|
||||
},
|
||||
{
|
||||
"type": "doctype",
|
||||
"name": "SMS Settings",
|
||||
|
@ -54,6 +54,7 @@
|
||||
"label": "Email Id",
|
||||
"oldfieldname": "email_id",
|
||||
"oldfieldtype": "Data",
|
||||
"options": "Email",
|
||||
"permlevel": 0,
|
||||
"reqd": 0,
|
||||
"search_index": 1
|
||||
@ -331,7 +332,7 @@
|
||||
],
|
||||
"icon": "icon-user",
|
||||
"idx": 1,
|
||||
"modified": "2015-02-20 05:07:57.739910",
|
||||
"modified": "2015-03-18 07:06:34.330943",
|
||||
"modified_by": "Administrator",
|
||||
"module": "CRM",
|
||||
"name": "Lead",
|
||||
|
0
erpnext/crm/doctype/newsletter/__init__.py
Normal file
0
erpnext/crm/doctype/newsletter/__init__.py
Normal file
@ -3,7 +3,7 @@
|
||||
|
||||
cur_frm.cscript.onload = function(doc) {
|
||||
return frappe.call({
|
||||
method: "erpnext.support.doctype.newsletter.newsletter.get_lead_options",
|
||||
method: "erpnext.crm.doctype.newsletter.newsletter.get_lead_options",
|
||||
type: "GET",
|
||||
callback: function(r) {
|
||||
set_field_options("lead_source", r.message.sources.join("\n"))
|
104
erpnext/crm/doctype/newsletter/newsletter.json
Normal file
104
erpnext/crm/doctype/newsletter/newsletter.json
Normal file
@ -0,0 +1,104 @@
|
||||
{
|
||||
"autoname": "field:subject",
|
||||
"creation": "2013-01-10 16:34:31",
|
||||
"description": "Create and Send Newsletters",
|
||||
"docstatus": 0,
|
||||
"doctype": "DocType",
|
||||
"document_type": "Other",
|
||||
"fields": [
|
||||
{
|
||||
"fieldname": "newsletter_list",
|
||||
"fieldtype": "Link",
|
||||
"label": "Newsletter List",
|
||||
"options": "Newsletter List",
|
||||
"permlevel": 0,
|
||||
"precision": "",
|
||||
"reqd": 1
|
||||
},
|
||||
{
|
||||
"fieldname": "subject",
|
||||
"fieldtype": "Small Text",
|
||||
"in_list_view": 0,
|
||||
"label": "Subject",
|
||||
"permlevel": 0,
|
||||
"reqd": 1
|
||||
},
|
||||
{
|
||||
"description": "",
|
||||
"fieldname": "send_from",
|
||||
"fieldtype": "Data",
|
||||
"label": "Sender",
|
||||
"no_copy": 1,
|
||||
"permlevel": 0,
|
||||
"reqd": 1
|
||||
},
|
||||
{
|
||||
"fieldname": "email_sent",
|
||||
"fieldtype": "Check",
|
||||
"in_list_view": 0,
|
||||
"label": "Email Sent?",
|
||||
"no_copy": 1,
|
||||
"permlevel": 0,
|
||||
"read_only": 1
|
||||
},
|
||||
{
|
||||
"fieldname": "newsletter_content",
|
||||
"fieldtype": "Section Break",
|
||||
"label": "",
|
||||
"permlevel": 0
|
||||
},
|
||||
{
|
||||
"fieldname": "message",
|
||||
"fieldtype": "Text Editor",
|
||||
"label": "Message",
|
||||
"permlevel": 0,
|
||||
"reqd": 0
|
||||
},
|
||||
{
|
||||
"description": "",
|
||||
"fieldname": "test_the_newsletter",
|
||||
"fieldtype": "Section Break",
|
||||
"label": "",
|
||||
"permlevel": 0
|
||||
},
|
||||
{
|
||||
"description": "A Lead with this email id should exist",
|
||||
"fieldname": "test_email_id",
|
||||
"fieldtype": "Data",
|
||||
"label": "Test Email Id",
|
||||
"permlevel": 0
|
||||
},
|
||||
{
|
||||
"fieldname": "test_send",
|
||||
"fieldtype": "Button",
|
||||
"label": "Test",
|
||||
"options": "test_send",
|
||||
"permlevel": 0
|
||||
}
|
||||
],
|
||||
"icon": "icon-envelope",
|
||||
"idx": 1,
|
||||
"modified": "2015-03-18 08:19:24.393173",
|
||||
"modified_by": "Administrator",
|
||||
"module": "CRM",
|
||||
"name": "Newsletter",
|
||||
"owner": "Administrator",
|
||||
"permissions": [
|
||||
{
|
||||
"cancel": 0,
|
||||
"create": 1,
|
||||
"delete": 1,
|
||||
"email": 1,
|
||||
"export": 1,
|
||||
"permlevel": 0,
|
||||
"print": 1,
|
||||
"read": 1,
|
||||
"report": 1,
|
||||
"role": "Newsletter Manager",
|
||||
"share": 1,
|
||||
"submit": 0,
|
||||
"write": 1
|
||||
}
|
||||
],
|
||||
"title_field": "subject"
|
||||
}
|
@ -5,7 +5,6 @@ from __future__ import unicode_literals
|
||||
|
||||
import frappe
|
||||
import frappe.utils
|
||||
from frappe.utils import cstr
|
||||
from frappe import throw, _
|
||||
from frappe.model.document import Document
|
||||
import erpnext.tasks
|
||||
@ -19,7 +18,6 @@ class Newsletter(Document):
|
||||
|
||||
def test_send(self, doctype="Lead"):
|
||||
self.recipients = self.test_email_id.split(",")
|
||||
self.send_to_doctype = "Lead"
|
||||
self.send_bulk()
|
||||
frappe.msgprint(_("Scheduled to send to {0}").format(self.test_email_id))
|
||||
|
||||
@ -44,46 +42,8 @@ class Newsletter(Document):
|
||||
frappe.db.set(self, "email_sent", 1)
|
||||
|
||||
def get_recipients(self):
|
||||
self.email_field = None
|
||||
if self.send_to_type=="Contact":
|
||||
self.send_to_doctype = "Contact"
|
||||
if self.contact_type == "Customer":
|
||||
return frappe.db.sql_list("""select email_id from tabContact
|
||||
where ifnull(email_id, '') != '' and ifnull(customer, '') != ''""")
|
||||
|
||||
elif self.contact_type == "Supplier":
|
||||
return frappe.db.sql_list("""select email_id from tabContact
|
||||
where ifnull(email_id, '') != '' and ifnull(supplier, '') != ''""")
|
||||
|
||||
elif self.send_to_type=="Lead":
|
||||
self.send_to_doctype = "Lead"
|
||||
conditions = []
|
||||
if self.lead_source and self.lead_source != "All":
|
||||
conditions.append(" and source='%s'" % self.lead_source.replace("'", "\'"))
|
||||
if self.lead_status and self.lead_status != "All":
|
||||
conditions.append(" and status='%s'" % self.lead_status.replace("'", "\'"))
|
||||
|
||||
if conditions:
|
||||
conditions = "".join(conditions)
|
||||
|
||||
return frappe.db.sql_list("""select email_id from tabLead
|
||||
where ifnull(email_id, '') != '' %s""" % (conditions or ""))
|
||||
|
||||
elif self.send_to_type=="Employee":
|
||||
self.send_to_doctype = "Employee"
|
||||
self.email_field = "company_email"
|
||||
|
||||
return frappe.db.sql_list("""select
|
||||
if(ifnull(company_email, '')!='', company_email, personal_email) as email_id
|
||||
from `tabEmployee` where status='Active'""")
|
||||
|
||||
elif self.email_list:
|
||||
email_list = [cstr(email).strip() for email in self.email_list.split(",")]
|
||||
for email in email_list:
|
||||
create_lead(email)
|
||||
|
||||
self.send_to_doctype = "Lead"
|
||||
return email_list
|
||||
"""Get recipients from Newsletter List"""
|
||||
return frappe.db.get_all("Newsletter List Subscriber", ["email"], {"unsubscribed": 0})
|
||||
|
||||
def send_bulk(self):
|
||||
if not self.get("recipients"):
|
||||
@ -101,8 +61,8 @@ class Newsletter(Document):
|
||||
|
||||
send(recipients = self.recipients, sender = sender,
|
||||
subject = self.subject, message = self.message,
|
||||
doctype = self.send_to_doctype, email_field = self.get("email_field") or "email_id",
|
||||
ref_doctype = self.doctype, ref_docname = self.name)
|
||||
ref_doctype = self.doctype, ref_docname = self.name,
|
||||
unsubscribe_url = "/api/method/erpnext.crm.doctype.newsletter.newsletter.unsubscribe?name=%s&email={email}" % self.name)
|
||||
|
||||
if not frappe.flags.in_test:
|
||||
frappe.db.auto_commit_on_many_writes = False
|
||||
@ -121,6 +81,18 @@ def get_lead_options():
|
||||
}
|
||||
|
||||
|
||||
@frappe.whitelist(allow_guest=True)
|
||||
def unsubscribe(email, name):
|
||||
from frappe.email.bulk import return_unsubscribed_page
|
||||
|
||||
name = frappe.db.get_value("Newsletter List Subscriber", {"email": email, "newsletter_list": name})
|
||||
if name:
|
||||
subscriber = frappe.get_doc("Newsletter List Subscriber", name)
|
||||
subscriber.unsubscribe = 1
|
||||
subscriber.save(ignore_permissions=True)
|
||||
|
||||
return_unsubscribed_page(email)
|
||||
|
||||
def create_lead(email_id):
|
||||
"""create a lead if it does not exist"""
|
||||
from email.utils import parseaddr
|
0
erpnext/crm/doctype/newsletter_list/__init__.py
Normal file
0
erpnext/crm/doctype/newsletter_list/__init__.py
Normal file
30
erpnext/crm/doctype/newsletter_list/newsletter_list.js
Normal file
30
erpnext/crm/doctype/newsletter_list/newsletter_list.js
Normal file
@ -0,0 +1,30 @@
|
||||
frappe.ui.form.on("Newsletter List", "refresh", function(frm) {
|
||||
if(!frm.is_new()) {
|
||||
frm.add_custom_button(__("View Subscribers"), function() {
|
||||
frappe.route_options = {"newsletter_list": frm.doc.name};
|
||||
frappe.set_route("Report", "Newsletter List Subscriber");
|
||||
});
|
||||
|
||||
frm.add_custom_button(__("Import Subscribers"), function() {
|
||||
frappe.prompt({fieldtype:"Select", options: frm.doc.__onload.import_types,
|
||||
label:__("Import Email From"), fieldname:"doctype", reqd:1}, function(data) {
|
||||
frappe.call({
|
||||
method: "erpnext.crm.doctype.newsletter_list.newsletter_list.import_from",
|
||||
args: {
|
||||
"name": frm.doc.name,
|
||||
"doctype": data.doctype
|
||||
},
|
||||
callback: function(r) {
|
||||
frm.set_value("total_subscribers", r.message);
|
||||
}
|
||||
})
|
||||
}, __("Import Subscribers"), __("Import"));
|
||||
});
|
||||
|
||||
frm.add_custom_button(__("New Newsletter"), function() {
|
||||
frappe.route_options = {"newsletter_list": frm.doc.name};
|
||||
new_doc("Newsletter");
|
||||
});
|
||||
|
||||
}
|
||||
});
|
79
erpnext/crm/doctype/newsletter_list/newsletter_list.json
Normal file
79
erpnext/crm/doctype/newsletter_list/newsletter_list.json
Normal file
@ -0,0 +1,79 @@
|
||||
{
|
||||
"allow_copy": 0,
|
||||
"allow_import": 1,
|
||||
"allow_rename": 0,
|
||||
"autoname": "field:title",
|
||||
"creation": "2015-03-18 06:08:32.729800",
|
||||
"custom": 0,
|
||||
"docstatus": 0,
|
||||
"doctype": "DocType",
|
||||
"document_type": "Master",
|
||||
"fields": [
|
||||
{
|
||||
"allow_on_submit": 0,
|
||||
"fieldname": "title",
|
||||
"fieldtype": "Data",
|
||||
"hidden": 0,
|
||||
"ignore_user_permissions": 0,
|
||||
"in_filter": 0,
|
||||
"in_list_view": 0,
|
||||
"label": "Title",
|
||||
"no_copy": 0,
|
||||
"permlevel": 0,
|
||||
"precision": "",
|
||||
"print_hide": 0,
|
||||
"read_only": 0,
|
||||
"report_hide": 0,
|
||||
"reqd": 1,
|
||||
"search_index": 0,
|
||||
"set_only_once": 0
|
||||
},
|
||||
{
|
||||
"default": "0",
|
||||
"fieldname": "total_subscribers",
|
||||
"fieldtype": "Int",
|
||||
"label": "Total Subscribers",
|
||||
"permlevel": 0,
|
||||
"precision": "",
|
||||
"read_only": 1
|
||||
}
|
||||
],
|
||||
"hide_heading": 0,
|
||||
"hide_toolbar": 0,
|
||||
"in_create": 0,
|
||||
"in_dialog": 0,
|
||||
"is_submittable": 0,
|
||||
"issingle": 0,
|
||||
"istable": 0,
|
||||
"modified": "2015-03-18 08:08:37.692367",
|
||||
"modified_by": "Administrator",
|
||||
"module": "CRM",
|
||||
"name": "Newsletter List",
|
||||
"name_case": "",
|
||||
"owner": "Administrator",
|
||||
"permissions": [
|
||||
{
|
||||
"amend": 0,
|
||||
"apply_user_permissions": 0,
|
||||
"cancel": 0,
|
||||
"create": 1,
|
||||
"delete": 1,
|
||||
"email": 1,
|
||||
"export": 1,
|
||||
"import": 1,
|
||||
"permlevel": 0,
|
||||
"print": 1,
|
||||
"read": 1,
|
||||
"report": 1,
|
||||
"role": "Newsletter Manager",
|
||||
"set_user_permissions": 0,
|
||||
"share": 1,
|
||||
"submit": 0,
|
||||
"write": 1
|
||||
}
|
||||
],
|
||||
"read_only": 0,
|
||||
"read_only_onload": 0,
|
||||
"sort_field": "modified",
|
||||
"sort_order": "DESC"
|
||||
}
|
52
erpnext/crm/doctype/newsletter_list/newsletter_list.py
Normal file
52
erpnext/crm/doctype/newsletter_list/newsletter_list.py
Normal file
@ -0,0 +1,52 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors and contributors
|
||||
# For license information, please see license.txt
|
||||
|
||||
from __future__ import unicode_literals
|
||||
import frappe
|
||||
from frappe.model.document import Document
|
||||
|
||||
class NewsletterList(Document):
|
||||
def onload(self):
|
||||
singles = [d.name for d in frappe.db.get_all("DocType", "name", {"issingle": 1})]
|
||||
self.get("__onload").import_types = [d.parent \
|
||||
for d in frappe.db.get_all("DocField", "parent", {"options": "Email"}) if d.parent not in singles]
|
||||
|
||||
def import_from(self, doctype):
|
||||
"""Extract email ids from given doctype and add them to the current list"""
|
||||
meta = frappe.get_meta(doctype)
|
||||
email_field = [d.fieldname for d in meta.fields if d.fieldtype in ("Data", "Small Text") and d.options=="Email"][0]
|
||||
unsubscribed_field = "unsubscribed" if meta.get_field("unsubscribed") else None
|
||||
added = 0
|
||||
|
||||
for user in frappe.db.get_all(doctype, [email_field, unsubscribed_field or "name"]):
|
||||
try:
|
||||
if user.get(email_field):
|
||||
frappe.get_doc({
|
||||
"doctype": "Newsletter List Subscriber",
|
||||
"newsletter_list": self.name,
|
||||
"email": user.get(email_field),
|
||||
"unsubscribed": user.get(unsubscribed_field) if unsubscribed_field else 0
|
||||
}).insert(ignore_permissions=True)
|
||||
|
||||
added += 1
|
||||
except Exception, e:
|
||||
# already added, ignore
|
||||
if e.args[0]!=1062:
|
||||
raise
|
||||
|
||||
frappe.msgprint(frappe._("{0} subscribers added").format(added))
|
||||
|
||||
return self.update_total_subscribers()
|
||||
|
||||
def update_total_subscribers(self):
|
||||
self.total_subscribers = frappe.db.sql("""select count(*) from `tabNewsletter List Subscriber`
|
||||
where newsletter_list=%s""", self.name)[0][0]
|
||||
self.db_update()
|
||||
return self.total_subscribers
|
||||
|
||||
@frappe.whitelist()
|
||||
def import_from(name, doctype):
|
||||
nlist = frappe.get_doc("Newsletter List", name)
|
||||
if nlist.has_permission("write"):
|
||||
return nlist.import_from(doctype)
|
12
erpnext/crm/doctype/newsletter_list/test_newsletter_list.py
Normal file
12
erpnext/crm/doctype/newsletter_list/test_newsletter_list.py
Normal file
@ -0,0 +1,12 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors and Contributors
|
||||
# See license.txt
|
||||
from __future__ import unicode_literals
|
||||
|
||||
import frappe
|
||||
import unittest
|
||||
|
||||
# test_records = frappe.get_test_records('Newletter List')
|
||||
|
||||
class TestNewletterList(unittest.TestCase):
|
||||
pass
|
@ -0,0 +1,109 @@
|
||||
{
|
||||
"allow_copy": 0,
|
||||
"allow_import": 1,
|
||||
"allow_rename": 0,
|
||||
"autoname": "hash",
|
||||
"creation": "2015-03-18 06:15:59.321619",
|
||||
"custom": 0,
|
||||
"docstatus": 0,
|
||||
"doctype": "DocType",
|
||||
"document_type": "Transaction",
|
||||
"fields": [
|
||||
{
|
||||
"allow_on_submit": 0,
|
||||
"fieldname": "newsletter_list",
|
||||
"fieldtype": "Link",
|
||||
"hidden": 0,
|
||||
"ignore_user_permissions": 0,
|
||||
"in_filter": 0,
|
||||
"in_list_view": 1,
|
||||
"label": "Newsletter List",
|
||||
"no_copy": 0,
|
||||
"options": "Newsletter List",
|
||||
"permlevel": 0,
|
||||
"precision": "",
|
||||
"print_hide": 0,
|
||||
"read_only": 0,
|
||||
"report_hide": 0,
|
||||
"reqd": 1,
|
||||
"search_index": 0,
|
||||
"set_only_once": 0
|
||||
},
|
||||
{
|
||||
"allow_on_submit": 0,
|
||||
"fieldname": "email",
|
||||
"fieldtype": "Data",
|
||||
"hidden": 0,
|
||||
"ignore_user_permissions": 0,
|
||||
"in_filter": 0,
|
||||
"in_list_view": 1,
|
||||
"label": "Email",
|
||||
"no_copy": 0,
|
||||
"permlevel": 0,
|
||||
"precision": "",
|
||||
"print_hide": 0,
|
||||
"read_only": 0,
|
||||
"report_hide": 0,
|
||||
"reqd": 1,
|
||||
"search_index": 0,
|
||||
"set_only_once": 0
|
||||
},
|
||||
{
|
||||
"allow_on_submit": 0,
|
||||
"fieldname": "unsubscribed",
|
||||
"fieldtype": "Check",
|
||||
"hidden": 0,
|
||||
"ignore_user_permissions": 0,
|
||||
"in_filter": 0,
|
||||
"in_list_view": 1,
|
||||
"label": "Unsubscribed",
|
||||
"no_copy": 0,
|
||||
"permlevel": 0,
|
||||
"precision": "",
|
||||
"print_hide": 0,
|
||||
"read_only": 0,
|
||||
"report_hide": 0,
|
||||
"reqd": 0,
|
||||
"search_index": 0,
|
||||
"set_only_once": 0
|
||||
}
|
||||
],
|
||||
"hide_heading": 0,
|
||||
"hide_toolbar": 0,
|
||||
"in_create": 0,
|
||||
"in_dialog": 0,
|
||||
"is_submittable": 0,
|
||||
"issingle": 0,
|
||||
"istable": 0,
|
||||
"modified": "2015-03-18 08:07:24.748431",
|
||||
"modified_by": "Administrator",
|
||||
"module": "CRM",
|
||||
"name": "Newsletter List Subscriber",
|
||||
"name_case": "",
|
||||
"owner": "Administrator",
|
||||
"permissions": [
|
||||
{
|
||||
"amend": 0,
|
||||
"apply_user_permissions": 0,
|
||||
"cancel": 0,
|
||||
"create": 1,
|
||||
"delete": 1,
|
||||
"email": 1,
|
||||
"export": 1,
|
||||
"import": 1,
|
||||
"permlevel": 0,
|
||||
"print": 1,
|
||||
"read": 1,
|
||||
"report": 1,
|
||||
"role": "Newsletter Manager",
|
||||
"set_user_permissions": 0,
|
||||
"share": 1,
|
||||
"submit": 0,
|
||||
"write": 1
|
||||
}
|
||||
],
|
||||
"read_only": 0,
|
||||
"read_only_onload": 0,
|
||||
"sort_field": "modified",
|
||||
"sort_order": "DESC"
|
||||
}
|
@ -0,0 +1,13 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors and contributors
|
||||
# For license information, please see license.txt
|
||||
|
||||
from __future__ import unicode_literals
|
||||
import frappe
|
||||
from frappe.model.document import Document
|
||||
|
||||
class NewsletterListSubscriber(Document):
|
||||
pass
|
||||
|
||||
def after_doctype_insert():
|
||||
frappe.db.add_unique("Newsletter List Subscriber", ("name", "email"))
|
@ -0,0 +1,12 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors and Contributors
|
||||
# See license.txt
|
||||
from __future__ import unicode_literals
|
||||
|
||||
import frappe
|
||||
import unittest
|
||||
|
||||
# test_records = frappe.get_test_records('Newsletter List Subscriber')
|
||||
|
||||
class TestNewsletterListSubscriber(unittest.TestCase):
|
||||
pass
|
@ -133,3 +133,4 @@ erpnext.patches.v5_0.set_appraisal_remarks
|
||||
erpnext.patches.v5_0.update_time_log_title
|
||||
erpnext.patches.v4_2.repost_reserved_qty
|
||||
erpnext.patches.v4_2.repost_sle_for_si_with_no_warehouse
|
||||
erpnext.patches.v5_0.newsletter
|
||||
|
30
erpnext/patches/v5_0/newsletter.py
Normal file
30
erpnext/patches/v5_0/newsletter.py
Normal file
@ -0,0 +1,30 @@
|
||||
# Copyright (c) 2015, Frappe Technologies Pvt. Ltd. and Contributors
|
||||
# License: GNU General Public License v3. See license.txt
|
||||
|
||||
import frappe
|
||||
import frappe.permisssions
|
||||
|
||||
def execute():
|
||||
frappe.reload_doctype("User")
|
||||
frappe.reload_doctype("Lead")
|
||||
frappe.reload_doctype("Contact")
|
||||
|
||||
frappe.reload_doc('crm', 'doctype', 'newsletter_list')
|
||||
frappe.reload_doc('crm', 'doctype', 'newsletter_list_subscriber')
|
||||
frappe.reload_doc('crm', 'doctype', 'newsletter')
|
||||
|
||||
frappe.permisssions.reset_perms("Newsletter")
|
||||
|
||||
if not frappe.db.exists("Role", "Newsletter Manager"):
|
||||
frappe.get_doc({"doctype": "Role", "role": "Newsletter Manager"}).insert()
|
||||
|
||||
for userrole in frappe.get_all("UserRole", "parent", {"role": "Sales Manager"}):
|
||||
user = frappe.get_doc("User", userrole.parent)
|
||||
user.add_roles("Newsletter Manager")
|
||||
|
||||
# create default lists
|
||||
general = frappe.new_doc("Newsletter List")
|
||||
general.title = "General"
|
||||
general.insert()
|
||||
general.import_from("Lead")
|
||||
general.import_from("Contact")
|
@ -1 +0,0 @@
|
||||
Newsletter to be sent to Leads / Contacts.
|
@ -1 +0,0 @@
|
||||
from __future__ import unicode_literals
|
@ -1,169 +0,0 @@
|
||||
{
|
||||
"autoname": "naming_series:",
|
||||
"creation": "2013-01-10 16:34:31",
|
||||
"description": "Create and Send Newsletters",
|
||||
"docstatus": 0,
|
||||
"doctype": "DocType",
|
||||
"document_type": "Other",
|
||||
"fields": [
|
||||
{
|
||||
"description": "Select who you want to send this newsletter to",
|
||||
"fieldname": "send_to",
|
||||
"fieldtype": "Section Break",
|
||||
"label": "Send To",
|
||||
"permlevel": 0
|
||||
},
|
||||
{
|
||||
"default": "NL-",
|
||||
"fieldname": "naming_series",
|
||||
"fieldtype": "Select",
|
||||
"label": "Series",
|
||||
"options": "NL-",
|
||||
"permlevel": 0,
|
||||
"reqd": 1
|
||||
},
|
||||
{
|
||||
"fieldname": "send_to_type",
|
||||
"fieldtype": "Select",
|
||||
"label": "Send To Type",
|
||||
"options": "Lead\nContact\nEmployee\nCustom",
|
||||
"permlevel": 0
|
||||
},
|
||||
{
|
||||
"fieldname": "column_break1",
|
||||
"fieldtype": "Column Break",
|
||||
"permlevel": 0
|
||||
},
|
||||
{
|
||||
"depends_on": "eval:doc.send_to_type==\"Lead\"",
|
||||
"fieldname": "lead_source",
|
||||
"fieldtype": "Select",
|
||||
"label": "Lead Source",
|
||||
"permlevel": 0
|
||||
},
|
||||
{
|
||||
"depends_on": "eval:doc.send_to_type==\"Lead\"",
|
||||
"fieldname": "lead_status",
|
||||
"fieldtype": "Select",
|
||||
"label": "Lead Status",
|
||||
"permlevel": 0
|
||||
},
|
||||
{
|
||||
"depends_on": "eval:doc.send_to_type==\"Contact\"",
|
||||
"fieldname": "contact_type",
|
||||
"fieldtype": "Select",
|
||||
"label": "Contact Type",
|
||||
"options": "Customer\nSupplier",
|
||||
"permlevel": 0
|
||||
},
|
||||
{
|
||||
"depends_on": "eval:doc.send_to_type==\"Custom\"",
|
||||
"description": "Comma separated list of email addresses",
|
||||
"fieldname": "email_list",
|
||||
"fieldtype": "Text",
|
||||
"label": "Send to this list",
|
||||
"permlevel": 0
|
||||
},
|
||||
{
|
||||
"fieldname": "newsletter_content",
|
||||
"fieldtype": "Section Break",
|
||||
"label": "Newsletter Content",
|
||||
"permlevel": 0
|
||||
},
|
||||
{
|
||||
"description": "If specified, send the newsletter using this email address",
|
||||
"fieldname": "send_from",
|
||||
"fieldtype": "Data",
|
||||
"label": "Send From",
|
||||
"no_copy": 1,
|
||||
"permlevel": 0
|
||||
},
|
||||
{
|
||||
"fieldname": "subject",
|
||||
"fieldtype": "Small Text",
|
||||
"in_list_view": 0,
|
||||
"label": "Subject",
|
||||
"permlevel": 0,
|
||||
"reqd": 1
|
||||
},
|
||||
{
|
||||
"fieldname": "message",
|
||||
"fieldtype": "Text Editor",
|
||||
"label": "Message",
|
||||
"permlevel": 0,
|
||||
"reqd": 0
|
||||
},
|
||||
{
|
||||
"description": "Check how the newsletter looks in an email by sending it to your email.",
|
||||
"fieldname": "test_the_newsletter",
|
||||
"fieldtype": "Section Break",
|
||||
"label": "Test the Newsletter",
|
||||
"permlevel": 0
|
||||
},
|
||||
{
|
||||
"description": "A Lead with this email id should exist",
|
||||
"fieldname": "test_email_id",
|
||||
"fieldtype": "Data",
|
||||
"label": "Test Email Id",
|
||||
"permlevel": 0
|
||||
},
|
||||
{
|
||||
"fieldname": "test_send",
|
||||
"fieldtype": "Button",
|
||||
"label": "Test",
|
||||
"options": "test_send",
|
||||
"permlevel": 0
|
||||
},
|
||||
{
|
||||
"fieldname": "newsletter_status",
|
||||
"fieldtype": "Section Break",
|
||||
"label": "Newsletter Status",
|
||||
"permlevel": 0
|
||||
},
|
||||
{
|
||||
"fieldname": "email_sent",
|
||||
"fieldtype": "Check",
|
||||
"in_list_view": 0,
|
||||
"label": "Email Sent?",
|
||||
"no_copy": 1,
|
||||
"permlevel": 0,
|
||||
"read_only": 1
|
||||
}
|
||||
],
|
||||
"icon": "icon-envelope",
|
||||
"idx": 1,
|
||||
"modified": "2015-01-08 10:45:54.106948",
|
||||
"modified_by": "Administrator",
|
||||
"module": "Support",
|
||||
"name": "Newsletter",
|
||||
"owner": "Administrator",
|
||||
"permissions": [
|
||||
{
|
||||
"cancel": 0,
|
||||
"create": 1,
|
||||
"delete": 1,
|
||||
"email": 0,
|
||||
"permlevel": 0,
|
||||
"print": 0,
|
||||
"read": 1,
|
||||
"report": 0,
|
||||
"role": "Sales Manager",
|
||||
"submit": 0,
|
||||
"write": 1
|
||||
},
|
||||
{
|
||||
"cancel": 0,
|
||||
"create": 1,
|
||||
"delete": 1,
|
||||
"email": 0,
|
||||
"permlevel": 0,
|
||||
"print": 0,
|
||||
"read": 1,
|
||||
"report": 0,
|
||||
"role": "Support Manager",
|
||||
"submit": 0,
|
||||
"write": 1
|
||||
}
|
||||
],
|
||||
"title_field": "subject"
|
||||
}
|
@ -53,6 +53,7 @@
|
||||
"label": "Email Id",
|
||||
"oldfieldname": "email_id",
|
||||
"oldfieldtype": "Data",
|
||||
"options": "Email",
|
||||
"permlevel": 0,
|
||||
"reqd": 0,
|
||||
"search_index": 1
|
||||
@ -176,7 +177,7 @@
|
||||
"idx": 1,
|
||||
"in_create": 0,
|
||||
"in_dialog": 0,
|
||||
"modified": "2015-02-20 05:07:55.636970",
|
||||
"modified": "2015-03-18 07:06:43.906702",
|
||||
"modified_by": "Administrator",
|
||||
"module": "Utilities",
|
||||
"name": "Contact",
|
||||
|
Loading…
x
Reference in New Issue
Block a user