diff --git a/accounts/Print Format/POS Invoice/POS Invoice.txt b/accounts/Print Format/POS Invoice/POS Invoice.txt
index ebf25e4..aab8e18 100644
--- a/accounts/Print Format/POS Invoice/POS Invoice.txt
+++ b/accounts/Print Format/POS Invoice/POS Invoice.txt
@@ -2,14 +2,14 @@
  {
   "creation": "2011-12-21 11:08:55", 
   "docstatus": 0, 
-  "modified": "2013-08-30 12:46:21", 
+  "modified": "2013-09-13 17:17:47", 
   "modified_by": "Administrator", 
   "owner": "Administrator"
  }, 
  {
   "doc_type": "Sales Invoice", 
   "doctype": "Print Format", 
-  "html": "<html>\n<head>\n<!--Item Table, Totals and Other Charges-->\n<script>\nfunction get_print_format() {\n\tvar oc = getchildren('Sales Invoice Item', doc.name, 'entries');\n\tvar rows = '<table width=\"100%\" cellpadding=\"0\" class=\"cart\">\\\n                <tr>\\\n                    <td colspan=\"3\"><hr></td>\\\n                </tr>\\\n                <tr>\\\n                    <td width=\"60%\" align=\"left\">ITEM CODE/DESC.</td>\\\n                    <td width=\"10%\" align=\"right\">QTY</td>\\\n                    <td width=\"30%\" align=\"right\">RATE</td>\\\n                </tr>\\\n                <tr>\\\n                    <td colspan=\"3\"><hr></td>\\\n                </tr>';\n\tfor (var x=0; x<oc.length; x++) {\n\t\trows += '<tr>\\\n                    <td align=\"left\">' + oc[x].item_code + '<br>' + oc[x].item_name + '</td>\\\n                    <td align=\"right\" style=\"vertical-align:top;\">' + oc[x].qty + '</td>\\\n                    <td align=\"right\" valign=\"top\">' + format_currency(oc[x].export_amount) + '</td>\\\n                </tr>';\n\t}\n    rows += '<tr>\\\n                <td colspan=\"3\"><hr></td>\\\n            </tr>\\\n            <tr>\\\n                <td colspan=\"2\" align=\"right\">Net Total</td>\\\n                <td align=\"right\">' + format_currency(doc.net_total_export) + '</td>\\\n            </tr>';\n    if (doc.other_charges_total_export != 0) {\n        var taxes = wn.model.get_children(\"Sales Taxes and Charges\", doc.name, \"other_charges\", \"Sales Invoice\");\n\t\t$.each(taxes, function(i, d) {\n\t\t\trows += '<tr>\\\n        \t\t\t\t<td colspan=\"2\" align=\"right\">' + d.description + '</td>\\\n        \t\t\t\t<td style=\"text-align: right;\">' + format_currency(d.tax_amount) + '</td>\\\n        \t\t\t<tr>';\n\t\t});\n    }\n    rows += '<tr>\\\n                <td colspan=\"2\" align=\"right\" style=\"vertical-align:middle;\">Grand Total</td>\\\n                <td align=\"right\"><hr width=\"90%\" align=\"right\">' + format_currency(doc.grand_total_export) + '<br>\\\n                    <hr width=\"90%\" align=\"right\"></td>\\\n            </tr>\\\n            <tr>\\\n                <td align=\"center\" colspan=\"3\">Thank You. Please visit again.</td>\\\n            </tr>\\\n            </table>';\n\treturn rows;\n}\n</script>\n<style>\n    table, tr, td, div, p {\n        font-family: Monospace;\n        line-height: 200%;\n    }\n    h1, h2, h3, h4, h5, h6 {\n        text-align: center;\n    }\n\t@media screen {\n\t\tbody {\n\t\t\twidth: 4in;\n\t\t}\n\t}\n</style>\n</head>\n\n<body>\n<table width=\"100%\" cellpadding=\"4\">\n    <tr>\n        <td align=\"left\">RECEIPT NO: <script>doc.name</script></td>\n        <td align=\"right\">DATE: <script>date.str_to_user(doc.posting_date)</script></td>\n    </tr>\n    <tr>\n        <td>M/s <script>doc.customer</script></td>\n    </tr>\n</table>\n<!--Item Table & Totals-->\n<div><script>get_print_format();</script></div>\n</body>\n</html>\n", 
+  "html": "<html>\n<head>\n<!--Item Table, Totals and Other Charges-->\n<script>\nfunction get_print_format() {\n    var oc = getchildren('Sales Invoice Item', doc.name, 'entries');\n\tvar rows = '<table width=\"100%\" cellpadding=\"0\" class=\"cart\">\\\n                <tr>\\\n                    <td colspan=\"3\"><hr></td>\\\n                </tr>\\\n                <tr>\\\n                    <td width=\"60%\" align=\"left\">ITEM NAME.</td>\\\n                    <td width=\"10%\" align=\"right\">QTY</td>\\\n                    <td width=\"30%\" align=\"right\">AMOUNT</td>\\\n                </tr>\\\n                <tr>\\\n                    <td colspan=\"3\"><hr></td>\\\n                </tr>';\n\tfor (var x=0; x<oc.length; x++) {\n        console.log(oc[x].item_code!=oc[x].item_name);\n\t\trows += '<tr>\\\n                    <td align=\"left\">' + oc[x].item_code + \n                        (oc[x].item_code!=oc[x].item_name ? ('<br>' + oc[x].item_name) : '') + '</td>\\\n                    <td align=\"right\" style=\"vertical-align:top;\">' + oc[x].qty + '</td>\\\n                    <td align=\"right\" valign=\"top\">' + format_currency(oc[x].export_amount, doc.currency) + '</td>\\\n                </tr>';\n\t}\n    rows += '<tr>\\\n                <td colspan=\"3\"><hr></td>\\\n            </tr>\\\n            <tr>\\\n                <td colspan=\"2\" align=\"right\">Net Total</td>\\\n                <td align=\"right\">' + format_currency(doc.net_total_export, doc.currency) + '</td>\\\n            </tr>';\n    if (doc.other_charges_total_export != 0) {\n        var taxes = wn.model.get_children(\"Sales Taxes and Charges\", doc.name, \"other_charges\", \"Sales Invoice\");\n\t\t$.each(taxes, function(i, d) {\n\t\t\trows += '<tr>\\\n        \t\t\t\t<td colspan=\"2\" align=\"right\">' + d.description + '</td>\\\n        \t\t\t\t<td style=\"text-align: right;\">' + format_currency(d.tax_amount / doc.conversion_rate, doc.currency) + '</td>\\\n        \t\t\t<tr>';\n\t\t});\n    }\n    rows += '<tr>\\\n                <td colspan=\"2\" align=\"right\" style=\"vertical-align:middle;\">Grand Total</td>\\\n                <td align=\"right\"><hr width=\"90%\" align=\"right\">' + format_currency(doc.grand_total_export, doc.currency) + '<br>\\\n                    <hr width=\"90%\" align=\"right\"></td>\\\n            </tr>\\\n            <tr>\\\n                <td align=\"center\" colspan=\"3\">Thank You. Please visit again.</td>\\\n            </tr>\\\n            </table>';\n\treturn rows;\n}\n</script>\n<style>\n    table, tr, td, div, p {\n        font-family: Monospace;\n        line-height: 200%;\n    }\n    h1, h2, h3, h4, h5, h6 {\n        text-align: center;\n    }\n\t@media screen {\n\t\tbody {\n\t\t\twidth: 4in;\n\t\t}\n\t}\n</style>\n</head>\n\n<body>\n<table width=\"100%\" cellpadding=\"4\">\n    <tr>\n        <td align=\"left\">RECEIPT NO: <script>doc.name</script></td>\n        <td align=\"right\">DATE: <script>date.str_to_user(doc.posting_date)</script></td>\n    </tr>\n    <tr>\n        <td>M/s <script>doc.customer</script></td>\n    </tr>\n</table>\n<!--Item Table & Totals-->\n<div><script>get_print_format();</script></div>\n</body>\n</html>\n", 
   "module": "Accounts", 
   "name": "__common__", 
   "print_format_type": "Client", 
diff --git a/buying/doctype/purchase_order/purchase_order.txt b/buying/doctype/purchase_order/purchase_order.txt
index 1134d95..d3c1620 100644
--- a/buying/doctype/purchase_order/purchase_order.txt
+++ b/buying/doctype/purchase_order/purchase_order.txt
@@ -2,7 +2,7 @@
  {
   "creation": "2013-05-21 16:16:39", 
   "docstatus": 0, 
-  "modified": "2013-08-09 14:45:51", 
+  "modified": "2013-09-12 18:34:54", 
   "modified_by": "Administrator", 
   "owner": "Administrator"
  }, 
@@ -132,6 +132,7 @@
   "fieldtype": "Date", 
   "in_filter": 1, 
   "label": "Purchase Order Date", 
+  "no_copy": 1, 
   "oldfieldname": "transaction_date", 
   "oldfieldtype": "Date", 
   "reqd": 1, 
diff --git a/buying/doctype/supplier/supplier.py b/buying/doctype/supplier/supplier.py
index 75b2e03..ccdeae9 100644
--- a/buying/doctype/supplier/supplier.py
+++ b/buying/doctype/supplier/supplier.py
@@ -132,14 +132,10 @@
 			sql("delete from `tabAddress` where name=%s",(rec['name']))
 	
 	def delete_supplier_contact(self):
-		for rec in sql("select * from `tabContact` where supplier=%s", (self.doc.name,), as_dict=1):
-			sql("delete from `tabContact` where name=%s",(rec['name']))
-			
-	def delete_supplier_communication(self):
-		webnotes.conn.sql("""\
-			delete from `tabCommunication`
-			where supplier = %s and customer is null""", self.doc.name)
-			
+		for contact in webnotes.conn.sql_list("""select name from `tabContact` 
+			where supplier=%s""", self.doc.name):
+				webnotes.delete_doc("Contact", contact)
+	
 	def delete_supplier_account(self):
 		"""delete supplier's ledger if exist and check balance before deletion"""
 		acc = sql("select name from `tabAccount` where master_type = 'Supplier' \
diff --git a/hr/doctype/job_applicant/job_applicant.py b/hr/doctype/job_applicant/job_applicant.py
index 9927230..9bf1b96 100644
--- a/hr/doctype/job_applicant/job_applicant.py
+++ b/hr/doctype/job_applicant/job_applicant.py
@@ -21,9 +21,4 @@
 		else:
 			status = "Open"
 			
-		webnotes.conn.set(self.doc, 'status', status)
-
-	def on_trash(self):
-		webnotes.conn.sql("""delete from `tabCommunication` 
-			where job_applicant=%s""", self.doc.name)
-		
\ No newline at end of file
+		webnotes.conn.set(self.doc, 'status', status)
\ No newline at end of file
diff --git a/install_erpnext.py b/install_erpnext.py
index c57a9e2..70cc2aa 100644
--- a/install_erpnext.py
+++ b/install_erpnext.py
@@ -149,6 +149,7 @@
 		exec_in_shell("easy_install pip")
 	
 	exec_in_shell("pip install --upgrade pip")
+	exec_in_shell("pip install --upgrade setuptools")
 	exec_in_shell("pip install --upgrade virtualenv")
 	exec_in_shell("pip install -q %s" % python_modules)
 	
diff --git a/patches/december_2012/address_title.py b/patches/december_2012/address_title.py
index fc7d2ba..13dd74d 100644
--- a/patches/december_2012/address_title.py
+++ b/patches/december_2012/address_title.py
@@ -9,9 +9,6 @@
 	webnotes.conn.sql("""update tabAddress set address_title = customer_name where ifnull(customer_name,'')!=''""")
 	webnotes.conn.sql("""update tabAddress set address_title = supplier_name where ifnull(supplier_name,'')!=''""")
 	webnotes.conn.sql("""update tabAddress set address_title = sales_partner where ifnull(sales_partner,'')!=''""")
-
-	webnotes.reload_doc("website", "doctype", "product_settings")
-	webnotes.reset_perms("Product Settings")
 	
 	# move code to new doctype
 	webnotes.conn.set_value("Website Script", None, "javascript", 
diff --git a/patches/june_2013/p03_buying_selling_for_price_list.py b/patches/june_2013/p03_buying_selling_for_price_list.py
index c71646a..931517e 100644
--- a/patches/june_2013/p03_buying_selling_for_price_list.py
+++ b/patches/june_2013/p03_buying_selling_for_price_list.py
@@ -1,21 +1,29 @@
 # Copyright (c) 2013, Web Notes Technologies Pvt. Ltd.
 # License: GNU General Public License v3. See license.txt
 
+from __future__ import unicode_literals
 import webnotes
 from webnotes.utils import cint
+import MySQLdb
 
 def execute():
 	webnotes.reload_doc("setup", "doctype", "price_list")
 	webnotes.reload_doc("stock", "doctype", "item_price")
 	
-	for price_list in webnotes.conn.sql_list("""select name from `tabPrice List`"""):
-		buying, selling = False, False
-		for b, s in webnotes.conn.sql("""select distinct buying, selling 
-			from `tabItem Price` where price_list_name=%s""", price_list):
-				buying = buying or cint(b)
-				selling = selling or cint(s)
+	try:
+		for price_list in webnotes.conn.sql_list("""select name from `tabPrice List`"""):
+			buying, selling = False, False
+			for b, s in webnotes.conn.sql("""select distinct buying, selling 
+				from `tabItem Price` where price_list_name=%s""", price_list):
+					buying = buying or cint(b)
+					selling = selling or cint(s)
 		
-		buying_or_selling = "Selling" if selling else "Buying"
-		webnotes.conn.set_value("Price List", price_list, "buying_or_selling", buying_or_selling)
-		webnotes.conn.sql("""update `tabItem Price` set buying_or_selling=%s 
-			where price_list_name=%s""", (buying_or_selling, price_list))
+			buying_or_selling = "Selling" if selling else "Buying"
+			webnotes.conn.set_value("Price List", price_list, "buying_or_selling", buying_or_selling)
+			webnotes.conn.sql("""update `tabItem Price` set buying_or_selling=%s 
+				where price_list_name=%s""", (buying_or_selling, price_list))
+	except MySQLdb.OperationalError, e:
+		if e.args[0] == 1054:
+			webnotes.conn.sql("""update `tabItem Price` set buying_or_selling="Selling" """)
+		else:
+			raise e
diff --git a/patches/september_2013/p01_update_communication.py b/patches/september_2013/p01_update_communication.py
index d840c80..3131738 100644
--- a/patches/september_2013/p01_update_communication.py
+++ b/patches/september_2013/p01_update_communication.py
@@ -1,15 +1,22 @@
+# Copyright (c) 2013, Web Notes Technologies Pvt. Ltd.
+# License: GNU General Public License v3. See license.txt
+
+from __future__ import unicode_literals
 import webnotes
+import MySQLdb
 
 def execute():
+	webnotes.reload_doc("core", "doctype", "communication")
+	webnotes.conn.sql("""update tabCommunication set communication_date = creation where 
+		ifnull(communication_date, '')='' """)
+	
 	for doctype in ("Contact", "Lead", "Job Applicant", "Supplier", "Customer", "Quotation", "Sales Person", "Support Ticket"):
-		fieldname = doctype.replace(" ", '_').lower()
-		webnotes.conn.sql("""update tabCommunication
-			set parenttype=%s, parentfield='communications', 
-			parent=`%s` 
-			where ifnull(`%s`, '')!=''""" % ("%s", fieldname, fieldname), doctype)
-			
-		webnotes.reload_doc("core", "doctype", "communication")
-			
-		webnotes.conn.sql("""update tabCommunication set communication_date = creation where 
-			ifnull(communication_date, '')='' """)
-	
\ No newline at end of file
+		try:
+			fieldname = doctype.replace(" ", '_').lower()
+			webnotes.conn.sql("""update tabCommunication
+				set parenttype=%s, parentfield='communications', 
+				parent=`%s` 
+				where ifnull(`%s`, '')!=''""" % ("%s", fieldname, fieldname), doctype)
+		except MySQLdb.OperationalError, e:
+			if e.args[0] != 1054:
+				raise e
diff --git a/selling/doctype/customer/customer.py b/selling/doctype/customer/customer.py
index fb3c006..d3a263f 100644
--- a/selling/doctype/customer/customer.py
+++ b/selling/doctype/customer/customer.py
@@ -126,14 +126,10 @@
 				webnotes.conn.sql("""delete from `tabAddress` where name=%s""", name)
 	
 	def delete_customer_contact(self):
-		for rec in sql("select * from `tabContact` where customer=%s", (self.doc.name,), as_dict=1):
-			sql("delete from `tabContact` where name=%s",(rec['name']))
+		for contact in webnotes.conn.sql_list("""select name from `tabContact` 
+			where customer=%s""", self.doc.name):
+				webnotes.delete_doc("Contact", contact)
 	
-	def delete_customer_communication(self):
-		webnotes.conn.sql("""\
-			delete from `tabCommunication`
-			where customer = %s and supplier is null""", self.doc.name)
-			
 	def delete_customer_account(self):
 		"""delete customer's ledger if exist and check balance before deletion"""
 		acc = sql("select name from `tabAccount` where master_type = 'Customer' \
@@ -145,7 +141,6 @@
 	def on_trash(self):
 		self.delete_customer_address()
 		self.delete_customer_contact()
-		self.delete_customer_communication()
 		self.delete_customer_account()
 		if self.doc.lead_name:
 			sql("update `tabLead` set status='Interested' where name=%s",self.doc.lead_name)
diff --git a/selling/doctype/lead/lead.py b/selling/doctype/lead/lead.py
index 1aff8c8..da11410 100644
--- a/selling/doctype/lead/lead.py
+++ b/selling/doctype/lead/lead.py
@@ -80,7 +80,6 @@
 		return webnotes.conn.get_value('Sales Email Settings',None,'email_id')
 
 	def on_trash(self):
-		webnotes.conn.sql("""update tabCommunication set lead=null where lead=%s""", self.doc.name)
 		webnotes.conn.sql("""update `tabSupport Ticket` set lead='' where lead=%s""",
 			self.doc.name)
 		
diff --git a/selling/doctype/quotation/quotation.py b/selling/doctype/quotation/quotation.py
index 588d8d6..44a67fa 100644
--- a/selling/doctype/quotation/quotation.py
+++ b/selling/doctype/quotation/quotation.py
@@ -204,11 +204,6 @@
 			print_lst.append(lst1)
 		return print_lst
 	
-	def update_followup_details(self):
-		sql("delete from `tabCommunication Log` where parent = '%s'"%self.doc.name)
-		for d in getlist(self.doclist, 'follow_up'):
-			d.save()
-
 @webnotes.whitelist()
 def make_sales_order(source_name, target_doclist=None):
 	return _make_sales_order(source_name, target_doclist)
diff --git a/startup/install.py b/startup/install.py
index ea281b8..655573f 100644
--- a/startup/install.py
+++ b/startup/install.py
@@ -64,7 +64,8 @@
 
 def feature_setup():
 	"""save global defaults and features setup"""
-	doc = webnotes.doc("Features Setup", "Features Setup")
+	bean = webnotes.bean("Features Setup", "Features Setup")
+	bean.ignore_permissions = True
 
 	# store value as 1 for all these fields
 	flds = ['fs_item_serial_nos', 'fs_item_batch_nos', 'fs_brands', 'fs_item_barcode',
@@ -74,8 +75,8 @@
 		'fs_recurring_invoice', 'fs_pos', 'fs_manufacturing', 'fs_quality',
 		'fs_page_break', 'fs_more_info', 'fs_pos_view'
 	]
-	doc.fields.update(dict(zip(flds, [1]*len(flds))))
-	doc.save()
+	bean.doc.fields.update(dict(zip(flds, [1]*len(flds))))
+	bean.save()
 
 def import_country_and_currency():
 	from webnotes.country_info import get_all
diff --git a/utilities/doctype/contact/contact.py b/utilities/doctype/contact/contact.py
index a116edb..84c8a59 100644
--- a/utilities/doctype/contact/contact.py
+++ b/utilities/doctype/contact/contact.py
@@ -55,7 +55,5 @@
 					self.doc.is_primary_contact = 1
 
 	def on_trash(self):
-		webnotes.conn.sql("""update tabCommunication set contact='' where contact=%s""",
-			self.doc.name)
 		webnotes.conn.sql("""update `tabSupport Ticket` set contact='' where contact=%s""",
 			self.doc.name)
\ No newline at end of file
