diff --git a/erpnext/accounts/utils.py b/erpnext/accounts/utils.py
index e0f0e3b..1853fc9 100644
--- a/erpnext/accounts/utils.py
+++ b/erpnext/accounts/utils.py
@@ -421,8 +421,3 @@
 			})
 
 	return all_outstanding_vouchers
-
-@frappe.whitelist()
-def get_letter_head(company):
-	return frappe.db.get_value("Company",company,"default_letter_head")
-
diff --git a/erpnext/public/js/controllers/transaction.js b/erpnext/public/js/controllers/transaction.js
index a96f5e9..c8b2b64 100644
--- a/erpnext/public/js/controllers/transaction.js
+++ b/erpnext/public/js/controllers/transaction.js
@@ -194,6 +194,7 @@
 		var fn = function() {
 			if(me.frm.doc.company && me.frm.fields_dict.currency) {
 				var company_currency = me.get_company_currency();
+				var company_doc = frappe.get_doc(":Company", me.frm.doc.company);
 				if (!me.frm.doc.currency) {
 					me.frm.set_value("currency", company_currency);
 				}
@@ -204,6 +205,12 @@
 				if (me.frm.doc.price_list_currency == company_currency) {
 					me.frm.set_value('plc_conversion_rate', 1.0);
 				}
+				if (company_doc.default_letter_head) {
+					me.frm.set_value("letter_head", company_doc.default_letter_head);
+				}
+				if (company_doc.default_terms) {
+					me.frm.set_value("tc_name", company_doc.default_terms);
+				}
 
 				me.frm.script_manager.trigger("currency");
 				me.apply_pricing_rule();
@@ -213,7 +220,6 @@
 		if (this.frm.doc.posting_date) var date = this.frm.doc.posting_date;
 		else var date = this.frm.doc.transaction_date;
 		erpnext.get_fiscal_year(this.frm.doc.company, date, fn);
-		erpnext.get_letter_head(this.frm.doc.company);
 
 		if(this.frm.doc.company) {
 			erpnext.last_selected_company = this.frm.doc.company;
diff --git a/erpnext/public/js/utils.js b/erpnext/public/js/utils.js
index 355fe7d..5476d14 100644
--- a/erpnext/public/js/utils.js
+++ b/erpnext/public/js/utils.js
@@ -105,21 +105,7 @@
 
 			d.show();
 		});
-	},
-
-	get_letter_head: function(company) {
-		frappe.call({
-			type:"GET",
-			method: "erpnext.accounts.utils.get_letter_head",
-			args: {
-				"company": company
-			},
-			callback: function(r) {
-				if (!r.exe)	cur_frm.set_value("letter_head", r.message);
-			}
-		});
-	},
-
+	}
 });
 
 
diff --git a/erpnext/selling/doctype/customer/customer.py b/erpnext/selling/doctype/customer/customer.py
index 19a9aae..f82e2fb 100644
--- a/erpnext/selling/doctype/customer/customer.py
+++ b/erpnext/selling/doctype/customer/customer.py
@@ -76,7 +76,7 @@
 
 	def validate_name_with_customer_group(self):
 		if frappe.db.exists("Customer Group", self.name):
-			frappe.throw(_("A Customer Group exists with same name please change the Customer name or rename the Customer Group"))
+			frappe.throw(_("A Customer Group exists with same name please change the Customer name or rename the Customer Group"), frappe.NameError)
 
 	def delete_customer_address(self):
 		addresses = frappe.db.sql("""select name, lead from `tabAddress`
@@ -125,9 +125,9 @@
 
 	billing_this_year = frappe.db.sql("""select sum(base_grand_total)
 		from `tabSales Invoice`
-		where customer=%s and docstatus = 1 and fiscal_year = %s""", 
+		where customer=%s and docstatus = 1 and fiscal_year = %s""",
 		(customer, frappe.db.get_default("fiscal_year")))
-		
+
 	total_unpaid = frappe.db.sql("""select sum(outstanding_amount)
 		from `tabSales Invoice`
 		where customer=%s and docstatus = 1""", customer)
diff --git a/erpnext/setup/doctype/company/company.json b/erpnext/setup/doctype/company/company.json
index 0e7b17a..db71d0f 100644
--- a/erpnext/setup/doctype/company/company.json
+++ b/erpnext/setup/doctype/company/company.json
@@ -53,14 +53,6 @@
    "read_only": 0
   }, 
   {
-   "fieldname": "default_letter_head", 
-   "fieldtype": "Link", 
-   "label": "Default Letter Head", 
-   "options": "Letter Head", 
-   "permlevel": 0, 
-   "precision": ""
-  }, 
-  {
    "fieldname": "domain", 
    "fieldtype": "Select", 
    "label": "Domain", 
@@ -72,10 +64,18 @@
    "fieldname": "charts_section", 
    "fieldtype": "Section Break", 
    "hidden": 0, 
-   "label": "Country Settings", 
+   "label": "Default Values", 
    "permlevel": 0
   }, 
   {
+   "fieldname": "default_letter_head", 
+   "fieldtype": "Link", 
+   "label": "Default Letter Head", 
+   "options": "Letter Head", 
+   "permlevel": 0, 
+   "precision": ""
+  }, 
+  {
    "fieldname": "default_holiday_list", 
    "fieldtype": "Link", 
    "label": "Default Holiday List", 
@@ -118,9 +118,17 @@
    "permlevel": 0
   }, 
   {
+   "fieldname": "default_terms", 
+   "fieldtype": "Link", 
+   "label": "Default Terms", 
+   "options": "Terms and Conditions", 
+   "permlevel": 0, 
+   "precision": ""
+  }, 
+  {
    "fieldname": "default_settings", 
    "fieldtype": "Section Break", 
-   "label": "Default Settings", 
+   "label": "Accounts Settings", 
    "oldfieldtype": "Section Break", 
    "permlevel": 0, 
    "read_only": 0
@@ -406,7 +414,7 @@
  ], 
  "icon": "icon-building", 
  "idx": 1, 
- "modified": "2015-05-04 11:22:42.116328", 
+ "modified": "2015-05-19 02:00:41.055138", 
  "modified_by": "Administrator", 
  "module": "Setup", 
  "name": "Company", 
diff --git a/erpnext/setup/doctype/company/company.py b/erpnext/setup/doctype/company/company.py
index ad89114..d358928 100644
--- a/erpnext/setup/doctype/company/company.py
+++ b/erpnext/setup/doctype/company/company.py
@@ -63,6 +63,8 @@
 		if self.default_currency:
 			frappe.db.set_value("Currency", self.default_currency, "enabled", 1)
 
+		frappe.clear_cache()
+
 	def install_country_fixtures(self):
 		if os.path.exists(os.path.join(os.path.dirname(__file__), "fixtures", self.country.lower())):
 			frappe.get_attr("erpnext.setup.doctype.company.fixtures.{0}.install".format(self.country.lower()))(self)
@@ -167,7 +169,7 @@
 			where defkey='Company' and defvalue=%s""", (newdn, olddn))
 
 		frappe.defaults.clear_cache()
-		
+
 	def on_trash(self):
 		"""
 			Trash accounts and cost centers for this company if no gl entry exists
@@ -178,7 +180,7 @@
 			frappe.db.sql("delete from `tabAccount` where company = %s", self.name)
 
 			# delete cost center child table - budget detail
-			frappe.db.sql("""delete bd.* from `tabBudget Detail` bd, `tabCost Center` cc 
+			frappe.db.sql("""delete bd.* from `tabBudget Detail` bd, `tabCost Center` cc
 				where bd.parent = cc.name and cc.company = %s""", self.name)
 			#delete cost center
 			frappe.db.sql("delete from `tabCost Center` WHERE company = %s", self.name)
diff --git a/erpnext/startup/boot.py b/erpnext/startup/boot.py
index 48efa27..474af2c 100644
--- a/erpnext/startup/boot.py
+++ b/erpnext/startup/boot.py
@@ -29,8 +29,9 @@
 			bootinfo.setup_complete = frappe.db.sql("""select name from
 				tabCompany limit 1""") and 'Yes' or 'No'
 
-		bootinfo.docs += frappe.db.sql("""select name, default_currency, cost_center
-            from `tabCompany`""", as_dict=1, update={"doctype":":Company"})
+		bootinfo.docs += frappe.db.sql("""select name, default_currency, cost_center,
+			default_terms, default_letter_head from `tabCompany`""",
+			as_dict=1, update={"doctype":":Company"})
 
 def load_country_and_currency(bootinfo):
 	country = frappe.db.get_default("country")
