[newsletter-list] fixes, patch fix
diff --git a/erpnext/crm/doctype/newsletter_list/newsletter_list.js b/erpnext/crm/doctype/newsletter_list/newsletter_list.js
index 8843769..ed0ac5e 100644
--- a/erpnext/crm/doctype/newsletter_list/newsletter_list.js
+++ b/erpnext/crm/doctype/newsletter_list/newsletter_list.js
@@ -21,6 +21,22 @@
 				}, __("Import Subscribers"), __("Import"));
 		});
 
+		frm.add_custom_button(__("Add Subscribers"), function() {
+			frappe.prompt({fieldtype:"Text",
+				label:__("Email Ids"), fieldname:"email_list", reqd:1}, function(data) {
+					frappe.call({
+						method: "erpnext.crm.doctype.newsletter_list.newsletter_list.add_subscribers",
+						args: {
+							"name": frm.doc.name,
+							"email_list": data.email_list
+						},
+						callback: function(r) {
+							frm.set_value("total_subscribers", r.message);
+						}
+					})
+				}, __("Add Subscribers"), __("Add"));
+		});
+
 		frm.add_custom_button(__("New Newsletter"), function() {
 			frappe.route_options = {"newsletter_list": frm.doc.name};
 			new_doc("Newsletter");
diff --git a/erpnext/crm/doctype/newsletter_list/newsletter_list.py b/erpnext/crm/doctype/newsletter_list/newsletter_list.py
index 583798d..010678a 100644
--- a/erpnext/crm/doctype/newsletter_list/newsletter_list.py
+++ b/erpnext/crm/doctype/newsletter_list/newsletter_list.py
@@ -5,6 +5,8 @@
 from __future__ import unicode_literals
 import frappe
 from frappe.model.document import Document
+from frappe.utils import validate_email_add
+from frappe import _
 
 class NewsletterList(Document):
 	def onload(self):
@@ -35,7 +37,7 @@
 				if e.args[0]!=1062:
 					raise
 
-		frappe.msgprint(frappe._("{0} subscribers added").format(added))
+		frappe.msgprint(_("{0} subscribers added").format(added))
 
 		return self.update_total_subscribers()
 
@@ -50,3 +52,29 @@
 	nlist = frappe.get_doc("Newsletter List", name)
 	if nlist.has_permission("write"):
 		return nlist.import_from(doctype)
+
+@frappe.whitelist()
+def add_subscribers(name, email_list):
+	count = 0
+	for email in email_list.replace(",", "\n").split("\n"):
+		email = email.strip()
+		if not validate_email_add(email):
+			frappe.throw(_("Invalid Email '{0}'").format(email))
+
+		if email:
+			try:
+				frappe.get_doc({
+					"doctype": "Newsletter List Subscriber",
+					"newsletter_list": name,
+					"email": email
+				}).insert()
+
+				count += 1
+			except Exception, e:
+				# ignore duplicate
+				if e.args[0] != 1062:
+					raise
+
+	frappe.msgprint(_("{0} subscribers added").format(count))
+
+	return frappe.get_doc("Newsletter List", name).update_total_subscribers()
diff --git a/erpnext/patches/v5_0/rename_customer_issue.py b/erpnext/patches/v5_0/rename_customer_issue.py
index 68bab3f..5b16fd2 100644
--- a/erpnext/patches/v5_0/rename_customer_issue.py
+++ b/erpnext/patches/v5_0/rename_customer_issue.py
@@ -1,5 +1,5 @@
 import frappe
 
 def execute():
-	if frappe.db.table_exists("tabCustomer Issue"):
+	if frappe.db.table_exists("Customer Issue"):
 		frappe.rename_doc("DocType", "Customer Issue", "Warranty Claim")