patch fix
diff --git a/erpnext/crm/doctype/newsletter_list/newsletter_list.py b/erpnext/crm/doctype/newsletter_list/newsletter_list.py
index ba0eec7..e4ba6b1 100644
--- a/erpnext/crm/doctype/newsletter_list/newsletter_list.py
+++ b/erpnext/crm/doctype/newsletter_list/newsletter_list.py
@@ -7,6 +7,7 @@
from frappe.model.document import Document
from frappe.utils import validate_email_add, strip
from frappe import _
+from email.utils import parseaddr
class NewsletterList(Document):
def onload(self):
@@ -23,7 +24,7 @@
for user in frappe.db.get_all(doctype, [email_field, unsubscribed_field or "name"]):
try:
- email = strip(user.get(email_field))
+ email = parseaddr(user.get(email_field))[1]
if email:
frappe.get_doc({
"doctype": "Newsletter List Subscriber",
diff --git a/erpnext/patches/v4_2/party_model.py b/erpnext/patches/v4_2/party_model.py
index e88bc9e..ad56109 100644
--- a/erpnext/patches/v4_2/party_model.py
+++ b/erpnext/patches/v4_2/party_model.py
@@ -96,8 +96,19 @@
frappe.db.commit()
def delete_individual_party_account():
- frappe.db.sql("""delete from `tabAccount` where ifnull(master_type, '') in ('Customer', 'Supplier')
- and ifnull(master_name, '') != ''""")
+ frappe.db.sql("""delete from `tabAccount` acc
+ where ifnull(acc.master_type, '') in ('Customer', 'Supplier')
+ and ifnull(acc.master_name, '') != ''
+ and not exists(select gle.name from `tabGL Entry` gle where gle.account = acc.name)""")
+
+ accounts_not_deleted = frappe.db.sql_list("""select name from `tabAccount` acc
+ where ifnull(acc.master_type, '') in ('Customer', 'Supplier')
+ and ifnull(acc.master_name, '') != ''
+ and exists(select gle.name from `tabGL Entry` gle where gle.account = acc.name)""")
+
+ if accounts_not_deleted:
+ print "Accounts not deleted: " + "\n".join(accounts_not_deleted)
+
def remove_customer_supplier_account_report():
for d in ["Customer Account Head", "Supplier Account Head"]: