[minor] [cleanup] Landed cost wizard
diff --git a/buying/doctype/purchase_common/purchase_common.js b/buying/doctype/purchase_common/purchase_common.js
index 67ba33c..5785b1a 100644
--- a/buying/doctype/purchase_common/purchase_common.js
+++ b/buying/doctype/purchase_common/purchase_common.js
@@ -333,10 +333,10 @@
 		// other charges added/deducted
 		if(tax_count) {
 			this.frm.doc.other_charges_added = wn.utils.sum($.map(this.frm.tax_doclist, 
-				function(tax) { return tax.add_deduct_tax == "Add" ? tax.tax_amount : 0.0; }));
+				function(tax) { return (tax.add_deduct_tax == "Add" && in_list(["Valuation and Total", "Total"], tax.category)) ? tax.tax_amount : 0.0; }));
 		
 			this.frm.doc.other_charges_deducted = wn.utils.sum($.map(this.frm.tax_doclist, 
-				function(tax) { return tax.add_deduct_tax == "Deduct" ? tax.tax_amount : 0.0; }));
+				function(tax) { return (tax.add_deduct_tax == "Deduct" && in_list(["Valuation and Total", "Total"], tax.category)) ? tax.tax_amount : 0.0; }));
 			
 			wn.model.round_floats_in(this.frm.doc, ["other_charges_added", "other_charges_deducted"]);
 			
diff --git a/buying/doctype/supplier/supplier.py b/buying/doctype/supplier/supplier.py
index c646fdb..75b2e03 100644
--- a/buying/doctype/supplier/supplier.py
+++ b/buying/doctype/supplier/supplier.py
@@ -18,9 +18,6 @@
 		self.doc = doc
 		self.doclist = doclist
 
-	def onload(self):
-		self.add_communication_list()
-
 	def autoname(self):
 		supp_master_name = webnotes.defaults.get_global_default('supp_master_name')
 		
diff --git a/buying/doctype/supplier/supplier.txt b/buying/doctype/supplier/supplier.txt
index 8fa7067..50202dc 100644
--- a/buying/doctype/supplier/supplier.txt
+++ b/buying/doctype/supplier/supplier.txt
@@ -2,7 +2,7 @@
  {
   "creation": "2013-01-10 16:34:11", 
   "docstatus": 0, 
-  "modified": "2013-08-08 14:22:08", 
+  "modified": "2013-09-02 16:25:44", 
   "modified_by": "Administrator", 
   "owner": "Administrator"
  }, 
@@ -205,6 +205,14 @@
   "oldfieldtype": "Data"
  }, 
  {
+  "doctype": "DocField", 
+  "fieldname": "communications", 
+  "fieldtype": "Table", 
+  "hidden": 1, 
+  "label": "Communications", 
+  "options": "Communication"
+ }, 
+ {
   "cancel": 0, 
   "create": 0, 
   "doctype": "DocPerm", 
diff --git a/docs/templates/docs.html b/docs/templates/docs.html
new file mode 100644
index 0000000..ef3cf8e
--- /dev/null
+++ b/docs/templates/docs.html
@@ -0,0 +1,51 @@
+{% extends "lib/core/doctype/documentation_tool/docs.html" %}
+
+{% block navbar %}
+<div class="navbar navbar-default" style="border-bottom: 2px solid #c0392b">
+	<div class="container">
+		<button type="button" class="navbar-toggle" 
+			data-toggle="collapse" data-target=".navbar-responsive-collapse">
+			<span class="icon-bar"></span>
+			<span class="icon-bar"></span>
+			<span class="icon-bar"></span>
+		</button>
+		<a class="navbar-brand" href="index.html">
+			<object data="img/splash.svg" class="erpnext-logo" 
+				type="image/svg+xml"></object> erpnext.org</a>
+		<div class="collapse navbar-collapse navbar-responsive-collapse">
+			<ul class="nav navbar-nav">
+				<li><a href="docs.user.html">User</a></li>
+				<li><a href="docs.dev.html">Developer</a></li>
+				<li><a href="docs.user.help.html">Help</a></li>
+				<li><a href="docs.download.html">Download</a></li>
+				<li><a href="https://erpnext.com" target="_blank">Cloud</a></li>
+			</ul>
+			<ul class="nav navbar-nav pull-right">
+				<li><a href="docs.about.html">About</a></li>
+			</ul>
+		</div>
+	</div>
+</div>
+{% endblock %}
+
+{% block footer %}
+<hr />
+<div class="footer text-muted" style="font-size: 80%;">
+	<div class="content row">
+		<div class="col-md-12">
+		&copy; <a href="https://erpnext.com">Web Notes</a> | 
+		<a href="docs.user.help.html">Help</a> | 
+		<a href="https://github.com/webnotes/erpnext" target="_blank">Code</a> |  
+		<a href="docs.attributions.html">Attributions</a> | 
+		<a href="https://erpnext.com">ERPNext Cloud</a> | 
+		<a href="https://erpnext.com/partners">Find a Partner</a> | 
+		<a href="https://erpnext.com/donate">Donate</a>
+		<br>
+		<p>
+		Code License: <a href="https://www.gnu.org/licenses/gpl.html">GNU/GPL 3</a>.
+		Documentation License: <a href="https://creativecommons.org/licenses/by-sa/3.0/">CC-BY-SA-3.0</a>.
+		</p>
+		</div>
+	</div>
+</div>
+{% endblock %}
\ No newline at end of file
diff --git a/hr/doctype/job_applicant/get_job_applications.py b/hr/doctype/job_applicant/get_job_applications.py
index 9bec43e..2e01328 100644
--- a/hr/doctype/job_applicant/get_job_applications.py
+++ b/hr/doctype/job_applicant/get_job_applications.py
@@ -37,7 +37,7 @@
 		mail.save_attachments_in_doc(applicant.doc)
 				
 		make(content=mail.content, sender=mail.from_email, 
-			doctype="Job Applicant", name=applicant.doc.name, set_lead=False)
+			doctype="Job Applicant", name=applicant.doc.name)
 
 def get_job_applications():
 	if cint(webnotes.conn.get_value('Jobs Email Settings', None, 'extract_emails')):
diff --git a/hr/doctype/job_applicant/job_applicant.py b/hr/doctype/job_applicant/job_applicant.py
index e9b12b0..04b6da9 100644
--- a/hr/doctype/job_applicant/job_applicant.py
+++ b/hr/doctype/job_applicant/job_applicant.py
@@ -11,9 +11,6 @@
 	def __init__(self, d, dl):
 		self.doc, self.doclist = d, dl
 		
-	def onload(self):
-		self.add_communication_list()
-
 	def get_sender(self, comm):
 		return webnotes.conn.get_value('Jobs Email Settings',None,'email_id')
 		
diff --git a/hr/doctype/job_applicant/job_applicant.txt b/hr/doctype/job_applicant/job_applicant.txt
index ebf95f6..62b1d80 100644
--- a/hr/doctype/job_applicant/job_applicant.txt
+++ b/hr/doctype/job_applicant/job_applicant.txt
@@ -2,7 +2,7 @@
  {
   "creation": "2013-01-29 19:25:37", 
   "docstatus": 0, 
-  "modified": "2013-07-05 14:43:11", 
+  "modified": "2013-09-02 16:26:23", 
   "modified_by": "Administrator", 
   "owner": "Administrator"
  }, 
@@ -90,6 +90,14 @@
   "label": "Thread HTML"
  }, 
  {
+  "doctype": "DocField", 
+  "fieldname": "communications", 
+  "fieldtype": "Table", 
+  "hidden": 1, 
+  "label": "Communications", 
+  "options": "Communication"
+ }, 
+ {
   "doctype": "DocPerm"
  }
 ]
\ No newline at end of file
diff --git a/patches/patch_list.py b/patches/patch_list.py
index 9492c4f..9e087c1 100644
--- a/patches/patch_list.py
+++ b/patches/patch_list.py
@@ -259,6 +259,8 @@
 	"patches.august_2013.p06_deprecate_cancelled_sl_entry",
 	"patches.august_2013.p06_fix_sle_against_stock_entry",
 	"execute:webnotes.bean('Style Settings').save() #2013-08-20",
+	"patches.september_2013.p01_fix_buying_amount_gl_entries",
+	"patches.september_2013.p01_update_communication",
 	"patches.august_2013.p06_deprecate_is_cancelled",
 	"execute:webnotes.delete_doc('DocType', 'Budget Control')",
 ]
\ No newline at end of file
diff --git a/patches/september_2013/__init__.py b/patches/september_2013/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/patches/september_2013/__init__.py
diff --git a/patches/september_2013/p01_fix_buying_amount_gl_entries.py b/patches/september_2013/p01_fix_buying_amount_gl_entries.py
new file mode 100644
index 0000000..369a291
--- /dev/null
+++ b/patches/september_2013/p01_fix_buying_amount_gl_entries.py
@@ -0,0 +1,66 @@
+# 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 webnotes.defaults
+from webnotes.utils import cint
+
+def execute():
+	if not cint(webnotes.defaults.get_global_default("auto_inventory_accounting")):
+		return
+	
+	# fix delivery note
+	for dn in webnotes.conn.sql_list("""select name from `tabDelivery Note` where docstatus=1
+		and posting_date >= "2013-08-06" order by posting_date"""):
+			recreate_gl_entries("Delivery Note", dn, "delivery_note_details")
+	
+	# fix sales invoice
+	for si in webnotes.conn.sql_list("""select name from `tabSales Invoice` where docstatus=1
+		and update_stock=1 and posting_date >= "2013-08-06" order by posting_date"""):
+			recreate_gl_entries("Sales Invoice", si, "entries")
+	
+def recreate_gl_entries(doctype, name, parentfield):
+	# calculate buying amount and make gl entries
+	bean = webnotes.bean(doctype, name)
+	bean.run_method("set_buying_amount")
+	
+	company_values = webnotes.conn.get_value("Company", bean.doc.company, ["default_expense_account",
+		"stock_adjustment_account", "cost_center", "stock_adjustment_cost_center"])
+	
+	# update missing expense account and cost center
+	for item in bean.doclist.get({"parentfield": parentfield}):
+		if item.buying_amount and not validate_item_values(item, bean.doc.company):
+			res = webnotes.conn.sql("""select expense_account, cost_center
+				from `tab%s` child where docstatus=1 and item_code=%s and
+					ifnull(expense_account, '')!='' and ifnull(cost_center, '')!='' and
+					(select company from `tabAccount` ac where ac.name=child.expense_account)=%s and
+					(select company from `tabCost Center` cc where cc.name=child.cost_center)=%s
+					order by creation desc limit 1""" % (item.doctype, "%s", "%s", "%s"), 
+					(item.item_code, bean.doc.company, bean.doc.company))
+			if res:
+				item.expense_account = res[0][0]
+				item.cost_center = res[0][1]
+			elif company_values:
+				item.expense_account = company_values[0] or company_values[1]
+				item.cost_center = company_values[2] or company_values[3]
+		
+			webnotes.conn.set_value(item.doctype, item.name, "expense_account", item.expense_account)
+			webnotes.conn.set_value(item.doctype, item.name, "cost_center", item.cost_center)
+	
+	# remove gl entries
+	webnotes.conn.sql("""delete from `tabGL Entry` where voucher_type=%s
+		and voucher_no=%s""", (doctype, name))
+	bean.run_method("make_gl_entries")
+	
+def validate_item_values(item, company):
+	if item.expense_account and \
+		webnotes.conn.get_value("Account", item.expense_account, "company")!=company:
+			return False
+	elif item.cost_center and \
+		webnotes.conn.get_value("Cost Center", item.cost_center, "company")!=company:
+			return False
+	elif not (item.expense_account and item.cost_center):
+		return False
+		
+	return True
\ No newline at end of file
diff --git a/patches/september_2013/p01_update_communication.py b/patches/september_2013/p01_update_communication.py
new file mode 100644
index 0000000..c3bd61b
--- /dev/null
+++ b/patches/september_2013/p01_update_communication.py
@@ -0,0 +1,10 @@
+import webnotes
+
+def execute():
+	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)
+	
\ No newline at end of file
diff --git a/public/js/toolbar.js b/public/js/toolbar.js
index d2ca512..2566fcb 100644
--- a/public/js/toolbar.js
+++ b/public/js/toolbar.js
@@ -20,20 +20,6 @@
 			<i class="icon-fixed-width icon-comments"></i> '+wn._('Live Chat')+'</a></li>');
 	}
 	
-	erpnext.toolbar.set_new_comments();
-
 	$("#toolbar-tools").append('<li><a href="#latest-updates">\
 		<i class="icon-fixed-width icon-rss"></i> Latest Updates</li>');
-}
-
-erpnext.toolbar.set_new_comments = function(new_comments) {
-	return;
-	var navbar_nc = $('.navbar-new-comments');
-	if(cint(new_comments)) {
-		navbar_nc.addClass('navbar-new-comments-true')
-		navbar_nc.text(new_comments);
-	} else {
-		navbar_nc.removeClass('navbar-new-comments-true');
-		navbar_nc.text(0);
-	}
 }
\ No newline at end of file
diff --git a/selling/doctype/customer/customer.py b/selling/doctype/customer/customer.py
index 2eabf12..cb19d4f 100644
--- a/selling/doctype/customer/customer.py
+++ b/selling/doctype/customer/customer.py
@@ -17,10 +17,7 @@
 	def __init__(self, doc, doclist=[]):
 		self.doc = doc
 		self.doclist = doclist
-	
-	def onload(self):
-		self.add_communication_list()
-			
+				
 	def autoname(self):
 		cust_master_name = webnotes.defaults.get_global_default('cust_master_name')
 		if cust_master_name == 'Customer Name':
diff --git a/selling/doctype/customer/customer.txt b/selling/doctype/customer/customer.txt
index 7da29d2..94bd8fc 100644
--- a/selling/doctype/customer/customer.txt
+++ b/selling/doctype/customer/customer.txt
@@ -2,7 +2,7 @@
  {
   "creation": "2013-06-11 14:26:44", 
   "docstatus": 0, 
-  "modified": "2013-08-08 14:22:13", 
+  "modified": "2013-09-02 16:25:13", 
   "modified_by": "Administrator", 
   "owner": "Administrator"
  }, 
@@ -349,6 +349,15 @@
   "permlevel": 0
  }, 
  {
+  "doctype": "DocField", 
+  "fieldname": "communications", 
+  "fieldtype": "Table", 
+  "hidden": 1, 
+  "label": "Communications", 
+  "options": "Communication", 
+  "permlevel": 0
+ }, 
+ {
   "amend": 0, 
   "cancel": 0, 
   "create": 1, 
diff --git a/selling/doctype/lead/get_leads.py b/selling/doctype/lead/get_leads.py
index c63468e..91ffd70 100644
--- a/selling/doctype/lead/get_leads.py
+++ b/selling/doctype/lead/get_leads.py
@@ -12,6 +12,9 @@
 	lead_name = webnotes.conn.get_value("Lead", {"email_id": sender})
 	contact_name = webnotes.conn.get_value("Contact", {"email_id": sender})
 
+	parent_doctype = "Contact" if contact_name else "Lead"
+	parent_name = contact_name or lead_name
+
 	if not (lead_name or contact_name):
 		# none, create a new Lead
 		lead = webnotes.bean({
@@ -26,11 +29,11 @@
 		lead_name = lead.doc.name
 
 	message = make(content=content, sender=sender, subject=subject,
-		lead=lead_name, contact=contact_name, date=date)
+		doctype = parent_doctype, name = parent_name, date=date)
 	
 	if mail:
 		# save attachments to parent if from mail
-		bean = webnotes.bean("Contact" if contact_name else "Lead", contact_name or lead_name)
+		bean = webnotes.bean(parent_doctype, parent_name)
 		mail.save_attachments_in_doc(bean.doc)
 
 class SalesMailbox(POP3Mailbox):	
diff --git a/selling/doctype/lead/lead.py b/selling/doctype/lead/lead.py
index 2bf1aa3..063c5f0 100644
--- a/selling/doctype/lead/lead.py
+++ b/selling/doctype/lead/lead.py
@@ -24,7 +24,6 @@
 		})
 
 	def onload(self):
-		self.add_communication_list()
 		customer = webnotes.conn.get_value("Customer", {"lead_name": self.doc.name})
 		if customer:
 			self.doc.fields["__is_customer"] = customer
diff --git a/selling/doctype/lead/lead.txt b/selling/doctype/lead/lead.txt
index d66c6a0..9402259 100644
--- a/selling/doctype/lead/lead.txt
+++ b/selling/doctype/lead/lead.txt
@@ -2,7 +2,7 @@
  {
   "creation": "2013-04-10 11:45:37", 
   "docstatus": 0, 
-  "modified": "2013-08-08 14:22:14", 
+  "modified": "2013-09-02 17:25:59", 
   "modified_by": "Administrator", 
   "owner": "Administrator"
  }, 
@@ -411,6 +411,14 @@
   "label": "Blog Subscriber"
  }, 
  {
+  "doctype": "DocField", 
+  "fieldname": "communications", 
+  "fieldtype": "Table", 
+  "hidden": 1, 
+  "label": "Communications", 
+  "options": "Communication"
+ }, 
+ {
   "cancel": 1, 
   "doctype": "DocPerm", 
   "role": "Sales Manager"
diff --git a/selling/doctype/opportunity/opportunity.py b/selling/doctype/opportunity/opportunity.py
index 906e547..a3ef197 100644
--- a/selling/doctype/opportunity/opportunity.py
+++ b/selling/doctype/opportunity/opportunity.py
@@ -25,9 +25,6 @@
 			"contact_by": webnotes.conn.get_value("Opportunity", self.doc.name, "contact_by") if \
 				(not cint(self.doc.fields.get("__islocal"))) else None,
 		})
-
-	def onload(self):
-		self.add_communication_list()
 		
 	def get_item_details(self, item_code):
 		item = sql("""select item_name, stock_uom, description_html, description, item_group, brand
diff --git a/selling/doctype/opportunity/opportunity.txt b/selling/doctype/opportunity/opportunity.txt
index 5b1d93f..4ca1564 100644
--- a/selling/doctype/opportunity/opportunity.txt
+++ b/selling/doctype/opportunity/opportunity.txt
@@ -2,7 +2,7 @@
  {
   "creation": "2013-03-07 18:50:30", 
   "docstatus": 0, 
-  "modified": "2013-08-08 14:22:15", 
+  "modified": "2013-09-02 16:27:33", 
   "modified_by": "Administrator", 
   "owner": "Administrator"
  }, 
@@ -443,6 +443,14 @@
   "width": "150px"
  }, 
  {
+  "doctype": "DocField", 
+  "fieldname": "communications", 
+  "fieldtype": "Table", 
+  "hidden": 1, 
+  "label": "Communications", 
+  "options": "Communication"
+ }, 
+ {
   "doctype": "DocPerm", 
   "role": "Sales User"
  }, 
diff --git a/selling/doctype/quotation/quotation.py b/selling/doctype/quotation/quotation.py
index b6ff1d7..c1b529c 100644
--- a/selling/doctype/quotation/quotation.py
+++ b/selling/doctype/quotation/quotation.py
@@ -20,9 +20,6 @@
 		self.doclist = doclist
 		self.tname = 'Quotation Item'
 		self.fname = 'quotation_details'
-
-	def onload(self):
-		self.add_communication_list()
 		 
 	# Get contact person details based on customer selected
 	# ------------------------------------------------------
diff --git a/selling/doctype/quotation/quotation.txt b/selling/doctype/quotation/quotation.txt
index c3b2434..9d47259 100644
--- a/selling/doctype/quotation/quotation.txt
+++ b/selling/doctype/quotation/quotation.txt
@@ -2,7 +2,7 @@
  {
   "creation": "2013-05-24 19:29:08", 
   "docstatus": 0, 
-  "modified": "2013-08-09 14:46:11", 
+  "modified": "2013-09-02 16:25:01", 
   "modified_by": "Administrator", 
   "owner": "Administrator"
  }, 
@@ -836,6 +836,14 @@
   "width": "40px"
  }, 
  {
+  "doctype": "DocField", 
+  "fieldname": "communications", 
+  "fieldtype": "Table", 
+  "hidden": 1, 
+  "label": "Communications", 
+  "options": "Communication"
+ }, 
+ {
   "amend": 1, 
   "cancel": 1, 
   "create": 1, 
diff --git a/setup/doctype/sales_person/sales_person.txt b/setup/doctype/sales_person/sales_person.txt
index 77ba6af..d78b5c8 100644
--- a/setup/doctype/sales_person/sales_person.txt
+++ b/setup/doctype/sales_person/sales_person.txt
@@ -2,7 +2,7 @@
  {
   "creation": "2013-01-10 16:34:24", 
   "docstatus": 0, 
-  "modified": "2013-08-05 18:11:22", 
+  "modified": "2013-09-02 16:26:54", 
   "modified_by": "Administrator", 
   "owner": "Administrator"
  }, 
@@ -161,6 +161,14 @@
   "search_index": 0
  }, 
  {
+  "doctype": "DocField", 
+  "fieldname": "communications", 
+  "fieldtype": "Table", 
+  "hidden": 1, 
+  "label": "Communications", 
+  "options": "Communication"
+ }, 
+ {
   "cancel": 0, 
   "create": 0, 
   "doctype": "DocPerm", 
diff --git a/stock/doctype/landed_cost_wizard/landed_cost_wizard.py b/stock/doctype/landed_cost_wizard/landed_cost_wizard.py
index 8c714b3..0924957 100644
--- a/stock/doctype/landed_cost_wizard/landed_cost_wizard.py
+++ b/stock/doctype/landed_cost_wizard/landed_cost_wizard.py
@@ -38,17 +38,22 @@
 		total_amt = self.get_total_pr_amt(purchase_receipts)
 		
 		for pr in purchase_receipts:
-			pr_obj = get_obj('Purchase Receipt', pr, with_children = 1)
-			idx = max([d.idx for d in pr_obj.doclist.get({"parentfield": "purchase_tax_details"})])
+			pr_bean = webnotes.bean('Purchase Receipt', pr)
+			idx = max([d.idx for d in pr_bean.doclist.get({"parentfield": "purchase_tax_details"})])
 			
 			for lc in self.doclist.get({"parentfield": "landed_cost_details"}):
-				amt = flt(lc.amount) * flt(pr_obj.doc.net_total)/ flt(total_amt)
+				amt = flt(lc.amount) * flt(pr_bean.doc.net_total)/ flt(total_amt)
 				
-				pr_oc_row = webnotes.conn.sql("""select name from `tabPurchase Taxes and Charges` 
-						where parent = %s and category = 'Valuation' and add_deduct_tax = 'Add' 
-						and charge_type = 'Actual' and account_head = %s""",(pr, lc.account_head))
-				if not pr_oc_row:	# add if not exists
-					ch = addchild(pr_obj.doc, 'purchase_tax_details', 'Purchase Taxes and Charges')
+				matched_row = pr_bean.doclist.get({
+					"parentfield": "purchase_tax_details", 
+					"category": "Valuation",
+					"add_deduct_tax": "Add",
+					"charge_type": "Actual",
+					"account_head": lc.account_head
+				})
+				
+				if not matched_row:	# add if not exists
+					ch = addchild(pr_bean.doc, 'purchase_tax_details', 'Purchase Taxes and Charges')
 					ch.category = 'Valuation'
 					ch.add_deduct_tax = 'Add'
 					ch.charge_type = 'Actual'
@@ -62,12 +67,12 @@
 					ch.save(1)
 					idx += 1
 				else:	# overwrite if exists
-					webnotes.conn.sql("""update `tabPurchase Taxes and Charges` 
-						set rate = %s, tax_amount = %s where name = %s and parent = %s""", 
-						(amt, amt, pr_oc_row[0][0], pr))
-			
-			pr_obj.calculate_taxes_and_totals()
-			for d in pr_obj.doclist:
+					matched_row[0].rate = amt
+					matched_row[0].tax_amount = amt
+					matched_row[0].cost_center = lc.cost_center
+					
+			pr_bean.run_method("validate")
+			for d in pr_bean.doclist:
 				d.save()
 	
 	def get_total_pr_amt(self, purchase_receipts):
diff --git a/support/doctype/support_ticket/get_support_mails.py b/support/doctype/support_ticket/get_support_mails.py
index 7e09846..fb26e57 100644
--- a/support/doctype/support_ticket/get_support_mails.py
+++ b/support/doctype/support_ticket/get_support_mails.py
@@ -46,7 +46,7 @@
 				
 		make(content=mail.content, sender=mail.from_email, subject = ticket.doc.subject,
 			doctype="Support Ticket", name=ticket.doc.name,
-			lead = ticket.doc.lead, contact=ticket.doc.contact, date=mail.date)
+			date=mail.date)
 			
 		if new_ticket and cint(self.email_settings.send_autoreply) and \
 			"mailer-daemon" not in mail.from_email.lower():
diff --git a/support/doctype/support_ticket/support_ticket.py b/support/doctype/support_ticket/support_ticket.py
index 2b8fe85..8e723ee 100644
--- a/support/doctype/support_ticket/support_ticket.py
+++ b/support/doctype/support_ticket/support_ticket.py
@@ -11,9 +11,6 @@
 	def __init__(self, doc, doclist=[]):
 		self.doc = doc
 		self.doclist = doclist
-
-	def onload(self):
-		self.add_communication_list()
 	
 	def get_sender(self, comm):
 		return webnotes.conn.get_value('Email Settings',None,'support_email')
@@ -53,7 +50,7 @@
 			if not self.doc.company:		
 				self.doc.company = webnotes.conn.get_value("Lead", self.doc.lead, "company") or \
 					webnotes.conn.get_default("company")
-			
+
 	def on_trash(self):
 		webnotes.conn.sql("""update `tabCommunication` set support_ticket=NULL 
 			where support_ticket=%s""", (self.doc.name,))
diff --git a/support/doctype/support_ticket/support_ticket.txt b/support/doctype/support_ticket/support_ticket.txt
index dcb4520..01d0e35 100644
--- a/support/doctype/support_ticket/support_ticket.txt
+++ b/support/doctype/support_ticket/support_ticket.txt
@@ -2,7 +2,7 @@
  {
   "creation": "2013-02-01 10:36:25", 
   "docstatus": 0, 
-  "modified": "2013-08-28 18:29:06", 
+  "modified": "2013-09-02 16:24:24", 
   "modified_by": "Administrator", 
   "owner": "Administrator"
  }, 
@@ -262,6 +262,14 @@
   "label": "Content Type"
  }, 
  {
+  "doctype": "DocField", 
+  "fieldname": "communications", 
+  "fieldtype": "Table", 
+  "hidden": 1, 
+  "label": "Communications", 
+  "options": "Communication"
+ }, 
+ {
   "cancel": 0, 
   "doctype": "DocPerm", 
   "role": "Guest"
diff --git a/utilities/demo/make_demo.py b/utilities/demo/make_demo.py
index 6f18f76..4383d32 100644
--- a/utilities/demo/make_demo.py
+++ b/utilities/demo/make_demo.py
@@ -30,7 +30,6 @@
 }
 
 def make(reset=False, simulate=True):
-	webnotes.connect()
 	#webnotes.print_messages = True
 	webnotes.mute_emails = True
 	webnotes.rollback_on_exception = True
@@ -38,7 +37,7 @@
 	if reset:
 		setup()
 	if simulate:
-		simulate()
+		_simulate()
 	
 def setup():
 	install()
@@ -50,7 +49,7 @@
 	# make_opening_stock()
 	# make_opening_accounts()
 
-def simulate():
+def _simulate():
 	global runs_for
 	current_date = webnotes.utils.getdate(start_date)
 	
@@ -411,7 +410,4 @@
 		if submit:
 			webnotes.form_dict["params"] = json.dumps({"_submit": 1})
 		webnotes.uploaded_file = os.path.join(os.path.dirname(__file__), "demo_docs", doctype+".csv")
-		upload()
-
-if __name__=="__main__":
-	make()
\ No newline at end of file
+		upload()
\ No newline at end of file
diff --git a/utilities/demo/make_erpnext_demo.py b/utilities/demo/make_erpnext_demo.py
index db1d25b..9e56839 100644
--- a/utilities/demo/make_erpnext_demo.py
+++ b/utilities/demo/make_erpnext_demo.py
@@ -6,7 +6,14 @@
 import utilities.demo.make_demo
 
 def make_demo_app():
-	
+	webnotes.mute_emails = 1
+	webnotes.connect()
+	utilities.demo.make_demo.make(reset=True, simulate=False)
+	# setup demo user etc so that the site it up faster, while the data loads
+	make_demo_user()
+	make_demo_login_page()
+	make_demo_on_login_script()
+	utilities.demo.make_demo.make(reset=False, simulate=True)
 
 def make_demo_user():
 	roles = ["Accounts Manager", "Analytics", "Expense Approver", "Accounts User", 
@@ -111,11 +118,4 @@
 	webnotes.conn.commit()
 
 if __name__=="__main__":
-	# webnotes.connect()
-	webnotes.mute_emails = 1
-	utilities.demo.make_demo.make(reset=True, simulate=False)
-	# setup demo user etc so that the site it up faster, while the data loads
-	make_demo_user()
-	make_demo_login_page()
-	make_demo_on_login_script()
-	utilities.demo.make_demo.make(reset=False, simulate=True)
\ No newline at end of file
+	make_demo_app()
\ No newline at end of file
diff --git a/utilities/doctype/contact/contact.py b/utilities/doctype/contact/contact.py
index 961bb52..9997cab 100644
--- a/utilities/doctype/contact/contact.py
+++ b/utilities/doctype/contact/contact.py
@@ -12,9 +12,6 @@
 		self.doc = doc
 		self.doclist = doclist
 
-	def onload(self):
-		self.add_communication_list()
-
 	def on_communication_sent(self, comm):
 		webnotes.conn.set(self.doc, 'status', 'Replied')
 
diff --git a/utilities/doctype/contact/contact.txt b/utilities/doctype/contact/contact.txt
index 63d0252..d3c7d88 100644
--- a/utilities/doctype/contact/contact.txt
+++ b/utilities/doctype/contact/contact.txt
@@ -2,7 +2,7 @@
  {
   "creation": "2013-01-10 16:34:32", 
   "docstatus": 0, 
-  "modified": "2013-07-05 14:32:19", 
+  "modified": "2013-09-02 16:26:13", 
   "modified_by": "Administrator", 
   "owner": "Administrator"
  }, 
@@ -226,6 +226,14 @@
   "read_only": 1
  }, 
  {
+  "doctype": "DocField", 
+  "fieldname": "communications", 
+  "fieldtype": "Table", 
+  "hidden": 1, 
+  "label": "Communications", 
+  "options": "Communication"
+ }, 
+ {
   "cancel": 1, 
   "doctype": "DocPerm", 
   "role": "System Manager"
diff --git a/utilities/transaction_base.py b/utilities/transaction_base.py
index aace0cb..22bc531 100644
--- a/utilities/transaction_base.py
+++ b/utilities/transaction_base.py
@@ -229,20 +229,7 @@
 		if int(webnotes.conn.get_value("Notification Control", None, dt) or 0):
 			self.doc.fields["__notification_message"] = \
 				webnotes.conn.get_value("Notification Control", None, dt + "_message")
-				
-	def add_communication_list(self):
-		# remove communications if present
-		self.doclist = webnotes.doclist(self.doclist).get({
-			"doctype": ["!=", "Communcation"]})
-		
-		comm_list = webnotes.conn.sql("""select * from tabCommunication 
-			where %s=%s order by modified desc limit 20""" \
-			% (self.doc.doctype.replace(" ", "_").lower(), "%s"),
-			self.doc.name, as_dict=1, update={"doctype":"Communication"})
-		
-		self.doclist.extend(webnotes.doclist([webnotes.doc(fielddata=d) \
-			for d in comm_list]))
-			
+							
 	def validate_posting_time(self):
 		if not self.doc.posting_time:
 			self.doc.posting_time = now_datetime().strftime('%H:%M:%S')