Merge branch 'develop' into independent-manu-entry
diff --git a/erpnext/__init__.py b/erpnext/__init__.py
index a5de50f..0b4696c 100644
--- a/erpnext/__init__.py
+++ b/erpnext/__init__.py
@@ -55,9 +55,9 @@
 	company.enable_perpetual_inventory = enable
 	company.save()
 
-def encode_company_abbr(name, company):
+def encode_company_abbr(name, company=None, abbr=None):
 	'''Returns name encoded with company abbreviation'''
-	company_abbr = frappe.get_cached_value('Company',  company,  "abbr")
+	company_abbr = abbr or frappe.get_cached_value('Company',  company,  "abbr")
 	parts = name.rsplit(" - ", 1)
 
 	if parts[-1].lower() != company_abbr.lower():
diff --git a/erpnext/accounts/doctype/opening_invoice_creation_tool/test_opening_invoice_creation_tool.py b/erpnext/accounts/doctype/opening_invoice_creation_tool/test_opening_invoice_creation_tool.py
index 07c72bd..b5aae98 100644
--- a/erpnext/accounts/doctype/opening_invoice_creation_tool/test_opening_invoice_creation_tool.py
+++ b/erpnext/accounts/doctype/opening_invoice_creation_tool/test_opening_invoice_creation_tool.py
@@ -148,7 +148,7 @@
 	company.company_name = "_Test Opening Invoice Company"
 	company.abbr = "_TOIC"
 	company.default_currency = "INR"
-	company.country = "India"
+	company.country = "Pakistan"
 	company.insert()
 	return company
 
diff --git a/erpnext/hr/doctype/appointment_letter/appointment_letter.py b/erpnext/hr/doctype/appointment_letter/appointment_letter.py
index 0120188..71327bf 100644
--- a/erpnext/hr/doctype/appointment_letter/appointment_letter.py
+++ b/erpnext/hr/doctype/appointment_letter/appointment_letter.py
@@ -12,14 +12,15 @@
 @frappe.whitelist()
 def get_appointment_letter_details(template):
 	body = []
-	intro= frappe.get_list("Appointment Letter Template",
-		fields = ['introduction', 'closing_notes'],
-		filters={'name': template
-	})[0]
-	content = frappe.get_list("Appointment Letter content",
-		fields = ['title', 'description'],
-		filters={'parent': template
-	})
+	intro = frappe.get_list('Appointment Letter Template',
+		fields=['introduction', 'closing_notes'],
+		filters={'name': template}
+	)[0]
+	content = frappe.get_all('Appointment Letter content',
+		fields=['title', 'description'],
+		filters={'parent': template},
+		order_by='idx'
+	)
 	body.append(intro)
 	body.append({'description': content})
 	return body
diff --git a/erpnext/public/js/queries.js b/erpnext/public/js/queries.js
index b635adc..b7d880a 100644
--- a/erpnext/public/js/queries.js
+++ b/erpnext/public/js/queries.js
@@ -83,6 +83,13 @@
 		};
 	},
 
+	dispatch_address_query: function(doc) {
+		return {
+			query: 'frappe.contacts.doctype.address.address.address_query',
+			filters: { link_doctype: 'Company', link_name: doc.company || '' }
+		};
+	},
+
 	supplier_filter: function(doc) {
 		if(!doc.supplier) {
 			frappe.throw(__("Please set {0}", [__(frappe.meta.get_label(doc.doctype, "supplier", doc.name))]));
diff --git a/erpnext/selling/sales_common.js b/erpnext/selling/sales_common.js
index e2e0db4..540aca2 100644
--- a/erpnext/selling/sales_common.js
+++ b/erpnext/selling/sales_common.js
@@ -41,6 +41,7 @@
 		me.frm.set_query('contact_person', erpnext.queries.contact_query);
 		me.frm.set_query('customer_address', erpnext.queries.address_query);
 		me.frm.set_query('shipping_address_name', erpnext.queries.address_query);
+		me.frm.set_query('dispatch_address_name', erpnext.queries.dispatch_address_query);
 
 
 		if(this.frm.fields_dict.selling_price_list) {
diff --git a/erpnext/setup/doctype/company/test_records.json b/erpnext/setup/doctype/company/test_records.json
index 9e55702..89be607 100644
--- a/erpnext/setup/doctype/company/test_records.json
+++ b/erpnext/setup/doctype/company/test_records.json
@@ -36,7 +36,7 @@
 		"abbr": "_TC3",
 		"company_name": "_Test Company 3",
 		"is_group": 1,
-		"country": "India",
+		"country": "Pakistan",
 		"default_currency": "INR",
 		"doctype": "Company",
 		"domain": "Manufacturing",
@@ -49,7 +49,7 @@
 		"company_name": "_Test Company 4",
 		"parent_company": "_Test Company 3",
 		"is_group": 1,
-		"country": "India",
+		"country": "Pakistan",
 		"default_currency": "INR",
 		"doctype": "Company",
 		"domain": "Manufacturing",
@@ -61,7 +61,7 @@
 		"abbr": "_TC5",
 		"company_name": "_Test Company 5",
 		"parent_company": "_Test Company 4",
-		"country": "India",
+		"country": "Pakistan",
 		"default_currency": "INR",
 		"doctype": "Company",
 		"domain": "Manufacturing",
diff --git a/erpnext/stock/doctype/shipment/test_shipment.py b/erpnext/stock/doctype/shipment/test_shipment.py
index 705b265..afe8218 100644
--- a/erpnext/stock/doctype/shipment/test_shipment.py
+++ b/erpnext/stock/doctype/shipment/test_shipment.py
@@ -39,9 +39,9 @@
 			"description": 'Test delivery note for shipment',
 			"qty": 5,
 			"uom": 'Nos',
-			"warehouse": 'Stores - SC',
+			"warehouse": 'Stores - _TC',
 			"rate": item.standard_rate,
-			"cost_center": 'Main - SC'
+			"cost_center": 'Main - _TC'
 		}
 	)
 	delivery_note.insert()
@@ -127,13 +127,7 @@
 		return create_shipment_address(address_title, company_name, 80331)
 
 def get_shipment_company():
-	company_name = 'Shipment Company'
-	abbr = 'SC'
-	companies = frappe.get_all("Company", fields=["name"], filters = {"company_name": company_name})
-	if len(companies):
-		return companies[0]
-	else:
-		return create_shipment_company(company_name, abbr)
+	return frappe.get_doc("Company", "_Test Company")
 
 def get_shipment_item(company_name):
 	item_name = 'Testing Shipment item'
@@ -182,17 +176,6 @@
 	customer.insert()
 	return customer
 
-
-def create_shipment_company(company_name, abbr):
-	company = frappe.new_doc("Company")
-	company.company_name = company_name
-	company.abbr = abbr
-	company.default_currency = 'EUR'
-	company.country = 'Germany'
-	company.enable_perpetual_inventory = 0
-	company.insert()
-	return company
-
 def create_shipment_customer(customer_name):
 	customer = frappe.new_doc("Customer")
 	customer.customer_name = customer_name
@@ -211,12 +194,12 @@
 	stock.posting_date = posting_date.strftime("%Y-%m-%d")
 	stock.append('items',
 		{
-			"t_warehouse": 'Stores - SC',
+			"t_warehouse": 'Stores - _TC',
 			"item_code": item.name,
 			"qty": 5,
 			"uom": 'Nos',
 			"basic_rate": item.standard_rate,
-			"cost_center": 'Main - SC'
+			"cost_center": 'Main - _TC'
 		}
 	)
 	stock.insert()
@@ -233,7 +216,7 @@
 	item.append('item_defaults',
 		{
 			"company": company_name,
-			"default_warehouse": 'Stores - SC'
+			"default_warehouse": 'Stores - _TC'
 		}
 	)
 	item.insert()
diff --git a/erpnext/tests/test_init.py b/erpnext/tests/test_init.py
index 36a9bf5..6184972 100644
--- a/erpnext/tests/test_init.py
+++ b/erpnext/tests/test_init.py
@@ -8,13 +8,8 @@
 
 class TestInit(unittest.TestCase):
 	def test_encode_company_abbr(self):
-		company = frappe.new_doc("Company")
-		company.company_name = "New from Existing Company For Test"
-		company.abbr = "NFECT"
-		company.default_currency = "INR"
-		company.save()
 
-		abbr = company.abbr
+		abbr = "NFECT"
 
 		names = [
 			"Warehouse Name", "ERPNext Foundation India", "Gold - Member - {a}".format(a=abbr),
@@ -32,7 +27,7 @@
 		]
 
 		for i in range(len(names)):
-			enc_name = encode_company_abbr(names[i], company.name)
+			enc_name = encode_company_abbr(names[i], abbr=abbr)
 			self.assertTrue(
 				enc_name == expected_names[i],
 				"{enc} is not same as {exp}".format(enc=enc_name, exp=expected_names[i])