Shopping cart addresses management (#11657)

diff --git a/erpnext/shopping_cart/cart.py b/erpnext/shopping_cart/cart.py
index 7bc7874..f7a7d48 100644
--- a/erpnext/shopping_cart/cart.py
+++ b/erpnext/shopping_cart/cart.py
@@ -34,12 +34,15 @@
 
 	addresses = get_address_docs(party=party)
 
+	if not doc.customer_address and addresses:
+		update_cart_address("customer_address", addresses[0].name)
+
 	return {
 		"doc": decorate_quotation_doc(doc),
 		"shipping_addresses": [{"name": address.name, "display": address.display}
-			for address in addresses if address.address_type == "Shipping"],
+			for address in addresses],
 		"billing_addresses": [{"name": address.name, "display": address.display}
-			for address in addresses if address.address_type == "Billing"],
+			for address in addresses],
 		"shipping_rules": get_applicable_shipping_rules(party)
 	}
 
@@ -47,9 +50,8 @@
 def place_order():
 	quotation = _get_cart_quotation()
 	quotation.company = frappe.db.get_value("Shopping Cart Settings", None, "company")
-	for fieldname in ["customer_address", "shipping_address_name"]:
-		if not quotation.get(fieldname):
-			throw(_("{0} is required").format(quotation.meta.get_label(fieldname)))
+	if not quotation.get("customer_address"):
+		throw(_("{0} is required").format(_(quotation.meta.get_label("customer_address"))))
 
 	quotation.flags.ignore_permissions = True
 	quotation.submit()