Merge branch 'staging' into develop
diff --git a/erpnext/accounts/doctype/tax_withholding_category/tax_withholding_category.py b/erpnext/accounts/doctype/tax_withholding_category/tax_withholding_category.py
index 9a2c095..f553cc0 100644
--- a/erpnext/accounts/doctype/tax_withholding_category/tax_withholding_category.py
+++ b/erpnext/accounts/doctype/tax_withholding_category/tax_withholding_category.py
@@ -19,6 +19,9 @@
 
 	fy = get_fiscal_year(ref_doc.posting_date, company=ref_doc.company)
 	tax_details = get_tax_withholding_details(tax_withholding_category, fy[0], ref_doc.company)
+	if not tax_details:
+		frappe.throw(_('Please set associated account in Tax Withholding Category {0} against Company {1}')
+			.format(tax_withholding_category, ref_doc.company))
 	tds_amount = get_tds_amount(ref_doc, tax_details, fy)
 	tax_row = get_tax_row(tax_details, tds_amount)
 	return tax_row
diff --git a/erpnext/accounts/party.py b/erpnext/accounts/party.py
index 056cd79..8c51ab3 100644
--- a/erpnext/accounts/party.py
+++ b/erpnext/accounts/party.py
@@ -22,17 +22,18 @@
 
 @frappe.whitelist()
 def get_party_details(party=None, account=None, party_type="Customer", company=None, posting_date=None,
-	bill_date=None, price_list=None, currency=None, doctype=None, ignore_permissions=False, fetch_payment_terms_template=True):
+	bill_date=None, price_list=None, currency=None, doctype=None, ignore_permissions=False, fetch_payment_terms_template=True, party_address=None):
 
 	if not party:
 		return {}
 	if not frappe.db.exists(party_type, party):
 		frappe.throw(_("{0}: {1} does not exists").format(party_type, party))
 	return _get_party_details(party, account, party_type,
-		company, posting_date, bill_date, price_list, currency, doctype, ignore_permissions, fetch_payment_terms_template)
+		company, posting_date, bill_date, price_list, currency, doctype, ignore_permissions, fetch_payment_terms_template, party_address)
 
 def _get_party_details(party=None, account=None, party_type="Customer", company=None, posting_date=None,
-	bill_date=None, price_list=None, currency=None, doctype=None, ignore_permissions=False, fetch_payment_terms_template=True):
+	bill_date=None, price_list=None, currency=None, doctype=None, ignore_permissions=False,
+	fetch_payment_terms_template=True, party_address=None, shipping_address=None):
 
 	out = frappe._dict(set_account_and_due_date(party, account, party_type, company, posting_date, bill_date, doctype))
 	party = out[party_type.lower()]
@@ -45,7 +46,7 @@
 
 	out["taxes_and_charges"] = set_taxes(party.name, party_type, posting_date, company, out.customer_group, out.supplier_group)
 	out["payment_terms_template"] = get_pyt_term_template(party.name, party_type, company)
-	set_address_details(out, party, party_type, doctype, company)
+	set_address_details(out, party, party_type, doctype, company, party_address, shipping_address)
 	set_contact_details(out, party, party_type)
 	set_other_values(out, party, party_type)
 	set_price_list(out, party, party_type, price_list)
@@ -71,19 +72,17 @@
 
 	return out
 
-def set_address_details(out, party, party_type, doctype=None, company=None):
+def set_address_details(out, party, party_type, doctype=None, company=None, party_address=None, shipping_address=None):  
 	billing_address_field = "customer_address" if party_type == "Lead" \
 		else party_type.lower() + "_address"
-	out[billing_address_field] = get_default_address(party_type, party.name)
+	out[billing_address_field] = party_address or get_default_address(party_type, party.name)
 	if doctype:
 		out.update(get_fetch_values(doctype, billing_address_field, out[billing_address_field]))
-
 	# address display
 	out.address_display = get_address_display(out[billing_address_field])
-
 	# shipping address
 	if party_type in ["Customer", "Lead"]:
-		out.shipping_address_name = get_party_shipping_address(party_type, party.name)
+		out.shipping_address_name = shipping_address or get_party_shipping_address(party_type, party.name)
 		out.shipping_address = get_address_display(out["shipping_address_name"])
 		if doctype:
 			out.update(get_fetch_values(doctype, 'shipping_address_name', out.shipping_address_name))
diff --git a/erpnext/controllers/buying_controller.py b/erpnext/controllers/buying_controller.py
index 315eb52..27273c0 100644
--- a/erpnext/controllers/buying_controller.py
+++ b/erpnext/controllers/buying_controller.py
@@ -68,7 +68,8 @@
 
 		# set contact and address details for supplier, if they are not mentioned
 		if getattr(self, "supplier", None):
-			self.update_if_missing(get_party_details(self.supplier, party_type="Supplier", ignore_permissions=self.flags.ignore_permissions, doctype=self.doctype, company=self.company))
+			self.update_if_missing(get_party_details(self.supplier, party_type="Supplier", ignore_permissions=self.flags.ignore_permissions,
+			doctype=self.doctype, company=self.company, party_address=self.supplier_address))
 
 		self.set_missing_item_details(for_validate)
 
diff --git a/erpnext/controllers/selling_controller.py b/erpnext/controllers/selling_controller.py
index 419afe1..c01c9ae 100644
--- a/erpnext/controllers/selling_controller.py
+++ b/erpnext/controllers/selling_controller.py
@@ -44,6 +44,7 @@
 		set_default_income_account_for_item(self)
 
 	def set_missing_values(self, for_validate=False):
+
 		super(SellingController, self).set_missing_values(for_validate)
 
 		# set contact and address details for customer, if they are not mentioned
@@ -61,10 +62,10 @@
 			party_details = _get_party_details(self.customer,
 				ignore_permissions=self.flags.ignore_permissions,
 				doctype=self.doctype, company=self.company,
-				fetch_payment_terms_template=fetch_payment_terms_template)
+				fetch_payment_terms_template=fetch_payment_terms_template,
+				party_address=self.customer_address, shipping_address=self.shipping_address)
 			if not self.meta.get_field("sales_team"):
 				party_details.pop("sales_team")
-
 			self.update_if_missing(party_details)
 
 		elif getattr(self, "lead", None):
diff --git a/erpnext/hooks.py b/erpnext/hooks.py
index 163fde4..6ca5f19 100644
--- a/erpnext/hooks.py
+++ b/erpnext/hooks.py
@@ -12,7 +12,7 @@
 source_link = "https://github.com/frappe/erpnext"
 
 develop_version = '12.x.x-develop'
-staging_version = '11.0.3-beta.5'
+staging_version = '11.0.3-beta.6'
 
 error_report_email = "support@erpnext.com"