diff --git a/controllers/js/contact_address_common.js b/controllers/js/contact_address_common.js
index 89b1d43..de1ab34 100644
--- a/controllers/js/contact_address_common.js
+++ b/controllers/js/contact_address_common.js
@@ -5,6 +5,11 @@
 	cur_frm.fields_dict.customer.get_query = erpnext.utils.customer_query;
 	cur_frm.fields_dict.supplier.get_query = erpnext.utils.supplier_query;
 	
+	if(cur_frm.fields_dict.lead) {
+		cur_frm.fields_dict.lead.get_query = erpnext.utils.lead_query;
+		cur_frm.add_fetch('lead', 'lead_name', 'lead_name');
+	}
+	
 	if(doc.__islocal) {
 		var last_route = wn.route_history.slice(-2, -1)[0];
 		if(last_route && last_route[0]==="Form") {
@@ -13,10 +18,13 @@
 				"Maintenance Schedule"]
 				.indexOf(last_route[1])!==-1) {
 				var refdoc = wn.model.get_doc(last_route[1], last_route[2]);
-				cur_frm.set_value("customer", refdoc.customer || refdoc.name);
-				cur_frm.set_value("customer_name", refdoc.customer_name);
-				if(cur_frm.doc.doctype==="Address")
-					cur_frm.set_value("address_title", cur_frm.doc.customer)
+
+				if(refdoc.doctype == "Quotation" ? refdoc.quotation_to=="Customer" : true) {
+					cur_frm.set_value("customer", refdoc.customer || refdoc.name);
+					cur_frm.set_value("customer_name", refdoc.customer_name);
+					if(cur_frm.doc.doctype==="Address")
+						cur_frm.set_value("address_title", cur_frm.doc.customer_name);
+				}
 			}
 			if(["Supplier", "Supplier Quotation", "Purchase Order", "Purchase Invoice", "Purchase Receipt"]
 				.indexOf(last_route[1])!==-1) {
@@ -24,7 +32,18 @@
 				cur_frm.set_value("supplier", refdoc.supplier || refdoc.name);
 				cur_frm.set_value("supplier_name", refdoc.supplier_name);
 				if(cur_frm.doc.doctype==="Address")
-					cur_frm.set_value("address_title", cur_frm.doc.supplier)
+					cur_frm.set_value("address_title", cur_frm.doc.supplier_name);
+			}
+			if(["Lead", "Quotation"]
+				.indexOf(last_route[1])!==-1) {
+				var refdoc = wn.model.get_doc(last_route[1], last_route[2]);
+				
+				if(refdoc.doctype == "Quotation" ? refdoc.quotation_to=="Lead" : true) {
+					cur_frm.set_value("lead", refdoc.lead || refdoc.name);
+					cur_frm.set_value("lead_name", refdoc.customer_name || refdoc.company_name || refdoc.lead_name);
+					if(cur_frm.doc.doctype==="Address")
+						cur_frm.set_value("address_title", cur_frm.doc.lead_name);
+				}
 			}
 		}
 	}
diff --git a/patches/june_2013/p07_taxes_price_list_for_territory.py b/patches/june_2013/p07_taxes_price_list_for_territory.py
index fbce115..9204866 100644
--- a/patches/june_2013/p07_taxes_price_list_for_territory.py
+++ b/patches/june_2013/p07_taxes_price_list_for_territory.py
@@ -4,11 +4,12 @@
 	webnotes.reload_doc("setup", "doctype", "for_territory")
 	webnotes.reload_doc("setup", "doctype", "price_list")
 	webnotes.reload_doc("accounts", "doctype", "sales_taxes_and_charges_master")
+	webnotes.reload_doc("accounts", "doctype", "shipping_rule")
 	
 	from setup.utils import get_root_of
 	root_territory = get_root_of("Territory")
 	
-	for parenttype in ["Sales Taxes and Charges Master", "Price List"]:
+	for parenttype in ["Sales Taxes and Charges Master", "Price List", "Shipping Rule"]:
 		for name in webnotes.conn.sql_list("""select name from `tab%s` main
 			where not exists (select parent from `tabFor Territory` territory
 				where territory.parenttype=%s and territory.parent=main.name)""" % \
diff --git a/patches/june_2013/p10_lead_address.py b/patches/june_2013/p10_lead_address.py
new file mode 100644
index 0000000..516e2a6
--- /dev/null
+++ b/patches/june_2013/p10_lead_address.py
@@ -0,0 +1,50 @@
+import webnotes
+
+def execute():
+	webnotes.reload_doc("utilities", "doctype", "address")
+	
+	webnotes.conn.auto_commit_on_many_writes = True
+	
+	for lead in webnotes.conn.sql("""select name as lead, lead_name, address_line1, address_line2, city, country,
+		state, pincode, status, company_name from `tabLead` where not exists 
+		(select name from `tabAddress` where `tabAddress`.lead=`tabLead`.name) and 
+			(ifnull(address_line1, '')!='' or ifnull(city, '')!='' or ifnull(country, '')!='' or ifnull(pincode, '')!='')""", as_dict=True):
+			if set_in_customer(lead):
+				continue
+
+			create_address_for(lead)
+			
+	webnotes.conn.auto_commit_on_many_writes = False
+			
+def set_in_customer(lead):
+	customer = webnotes.conn.get_value("Customer", {"lead_name": lead.lead})
+	if customer:
+		customer_address = webnotes.conn.sql("""select name from `tabAddress`
+			where customer=%s and (address_line1=%s or address_line2=%s or pincode=%s)""", 
+			(customer, lead.address_line1, lead.address_line2, lead.pincode))
+		if customer_address:
+			webnotes.conn.sql("""update `tabAddress` set lead=%s, lead_name=%s
+				where name=%s""", (lead.lead, lead.company_name or lead.lead_name, customer_address[0][0]))
+			return True
+			
+	return False
+			
+def create_address_for(lead):
+	address_title = lead.company_name or lead.lead_name or lead.lead
+	
+	for c in ['%', "'", '"', '#', '*', '?', '`']:
+		address_title = address_title.replace(c, "")
+	
+	if webnotes.conn.get_value("Address", address_title.strip() + "-" + "Billing"):
+		address_title += " " + lead.lead 
+	
+	lead.update({
+		"doctype": "Address", 
+		"address_type": "Billing", 
+		"address_title": address_title
+	})
+	
+	del lead["company_name"]
+	del lead["status"]
+	
+	webnotes.bean(lead).insert()
\ No newline at end of file
diff --git a/patches/patch_list.py b/patches/patch_list.py
index 8979f43..aaf5102 100644
--- a/patches/patch_list.py
+++ b/patches/patch_list.py
@@ -247,5 +247,8 @@
 	"patches.june_2013.p06_drop_unused_tables",
 	"patches.june_2013.p08_shopping_cart_settings",
 	"patches.june_2013.p05_remove_search_criteria_reports",
+	"patches.june_2013.p07_taxes_price_list_for_territory",
+	"patches.june_2013.p08_shopping_cart_settings",
 	"patches.june_2013.p09_update_global_defaults",
+	"patches.june_2013.p10_lead_address",
 ]
\ No newline at end of file
diff --git a/selling/doctype/lead/lead.js b/selling/doctype/lead/lead.js
index c94aafa..8fb26c5 100644
--- a/selling/doctype/lead/lead.js
+++ b/selling/doctype/lead/lead.js
@@ -14,78 +14,79 @@
 // You should have received a copy of the GNU General Public License
 // along with this program.	If not, see <http://www.gnu.org/licenses/>.
 
-// Module CRM
-
 wn.require('app/utilities/doctype/sms_control/sms_control.js');
+wn.require('app/setup/doctype/contact_control/contact_control.js');
 
-cur_frm.cscript.onload = function(doc, cdt, cdn) {
-	if(user =='Guest'){
-		hide_field(['status', 'naming_series', 'order_lost_reason',
-	'customer', 'rating', 'fax', 'website', 'territory',
-	'address_line1', 'address_line2', 'city', 'state',
-	'country', 'pincode', 'address', 'lead_owner', 'market_segment',
-	'industry', 'campaign_name', 'interested_in', 'company',
-	'fiscal_year', 'contact_by', 'contact_date', 'last_contact_date',
-	'contact_date_ref', 'to_discuss', 'more_info', 'follow_up',
-	'communication_history', 'cc_to', 'subject', 'message', 'lead_attachment_detail',
-	'Create Customer', 'Create Opportunity', 'transaction_date', 'type', 'source']);
-		doc.source = 'Website';
-	}
-	if(!doc.status) set_multiple(dt,dn,{status:'Open'});
-
-	if (!doc.date){ 
-		doc.date = date.obj_to_str(new Date());
-	}
-	// set naming series
-	if(user=='Guest') doc.naming_series = 'WebLead';
+wn.provide("erpnext");
+erpnext.LeadController = wn.ui.form.Controller.extend({
+	setup: function() {
+		this.frm.fields_dict.customer.get_query = erpnext.utils.customer_query;
+	},
 	
-	cur_frm.add_fetch('customer', 'customer_name', 'company_name');
-	
-	if(cur_frm.fields_dict.lead_owner.df.options.match(/^Profile/)) {
-		cur_frm.fields_dict.lead_owner.get_query = erpnext.utils.profile_query;
-	}
-
-	if(cur_frm.fields_dict.contact_by.df.options.match(/^Profile/)) {
-		cur_frm.fields_dict.contact_by.get_query = erpnext.utils.profile_query;
-	}
-
-	if(in_list(user_roles,'System Manager')) {
-		cur_frm.footer.help_area.innerHTML = '<hr>\
-			<p><a href="#Form/Sales Email Settings">Sales Email Settings</a><br>\
-			<span class="help">Automatically extract Leads from a mail box e.g. "sales@example.com"</span></p>';
-	}
-}
-
-cur_frm.cscript.refresh_custom_buttons = function(doc) {
-	cur_frm.clear_custom_buttons();
-	if(!doc.__islocal && !in_list(['Converted', 'Lead Lost'], doc.status)) {
-		if (doc.source != 'Existing Customer') {
-			cur_frm.add_custom_button('Create Customer',
-				cur_frm.cscript['Create Customer']);
+	onload: function() {
+		if(cur_frm.fields_dict.lead_owner.df.options.match(/^Profile/)) {
+			cur_frm.fields_dict.lead_owner.get_query = erpnext.utils.profile_query;
 		}
-		cur_frm.add_custom_button('Create Opportunity',
-			cur_frm.cscript['Create Opportunity']);
-		cur_frm.add_custom_button('Send SMS', cur_frm.cscript.send_sms);
+
+		if(cur_frm.fields_dict.contact_by.df.options.match(/^Profile/)) {
+			cur_frm.fields_dict.contact_by.get_query = erpnext.utils.profile_query;
+		}
+
+		if(in_list(user_roles,'System Manager')) {
+			cur_frm.footer.help_area.innerHTML = '<hr>\
+				<p><a href="#Form/Sales Email Settings">Sales Email Settings</a><br>\
+				<span class="help">Automatically extract Leads from a mail box e.g. "sales@example.com"</span></p>';
+		}
+	},
+	
+	refresh: function() {
+		erpnext.hide_naming_series();
+		this.frm.clear_custom_buttons();
+		
+		this.frm.__is_customer = this.frm.__is_customer || this.frm.doc.__is_customer;
+		if(!this.frm.doc.__islocal && !this.frm.__is_customer) {
+			this.frm.add_custom_button("Create Customer", this.frm.cscript['Create Customer']);
+			this.frm.add_custom_button("Create Opportunity", this.frm.cscript['Create Opportunity']);
+			this.frm.add_custom_button("Send SMS", this.frm.cscript.send_sms);
+		}
+		
+		cur_frm.communication_view = new wn.views.CommunicationList({
+			list: wn.model.get("Communication", {"lead": this.frm.doc.name}),
+			parent: this.frm.fields_dict.communication_html.wrapper,
+			doc: this.frm.doc,
+			recipients: this.frm.doc.email_id
+		});
+		
+		if(!this.frm.doc.__islocal) {
+			this.make_address_list();
+		}
+	},
+	
+	make_address_list: function() {
+		var me = this;
+		if(!this.frm.address_list) {
+			this.frm.address_list = new wn.ui.Listing({
+				parent: this.frm.fields_dict['address_html'].wrapper,
+				page_length: 5,
+				new_doctype: "Address",
+				get_query: function() {
+					return 'select name, address_type, address_line1, address_line2, \
+					city, state, country, pincode, fax, email_id, phone, \
+					is_primary_address, is_shipping_address from tabAddress \
+					where lead="'+me.frm.doc.name+'" and docstatus != 2 \
+					order by is_primary_address, is_shipping_address desc'
+				},
+				as_dict: 1,
+				no_results_message: 'No addresses created',
+				render_row: this.render_address_row,
+			});
+			// note: render_address_row is defined in contact_control.js
+		}
+		this.frm.address_list.run();
 	}
-}
+});
 
-cur_frm.cscript.refresh = function(doc, cdt, cdn) {
-	cur_frm.cscript.refresh_custom_buttons(doc);
-	erpnext.hide_naming_series();
-
-	cur_frm.communication_view = new wn.views.CommunicationList({
-		list: wn.model.get("Communication", {"lead": doc.name}),
-		parent: cur_frm.fields_dict.communication_html.wrapper,
-		doc: doc,
-		recipients: doc.email_id
-	})
-}
-
-
-
-cur_frm.cscript.status = function(doc, cdt, cdn){
-	cur_frm.cscript.refresh(doc, cdt, cdn);
-}
+$.extend(cur_frm.cscript, new erpnext.LeadController({frm: cur_frm}));
 
 cur_frm.cscript['Create Customer'] = function(){
 	var doc = cur_frm.doc;
@@ -147,11 +148,4 @@
 			}
 		}
 	);
-}
-
-//get query select Territory
-cur_frm.fields_dict['territory'].get_query = function(doc,cdt,cdn) {
-	return 'SELECT `tabTerritory`.`name`,`tabTerritory`.`parent_territory` FROM `tabTerritory` WHERE `tabTerritory`.`is_group` = "No" AND `tabTerritory`.`docstatus`!= 2 AND `tabTerritory`.%(key)s LIKE "%s" ORDER BY	`tabTerritory`.`name` ASC LIMIT 50';
-}
-
-cur_frm.fields_dict.customer.get_query = erpnext.utils.customer_query;
\ No newline at end of file
+}
\ No newline at end of file
diff --git a/selling/doctype/lead/lead.py b/selling/doctype/lead/lead.py
index a54343a..928eda7 100644
--- a/selling/doctype/lead/lead.py
+++ b/selling/doctype/lead/lead.py
@@ -38,6 +38,9 @@
 
 	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
 
 	def on_communication_sent(self, comm):
 		webnotes.conn.set(self.doc, 'status', 'Replied')
diff --git a/selling/doctype/lead/lead.txt b/selling/doctype/lead/lead.txt
index 0b602ea..eed87ba 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-06-14 16:20:17", 
+  "modified": "2013-06-28 15:08:26", 
   "modified_by": "Administrator", 
   "owner": "Administrator"
  }, 
@@ -164,10 +164,34 @@
   "doctype": "DocField", 
   "fieldname": "contact_info", 
   "fieldtype": "Section Break", 
-  "label": "Contact Info", 
+  "label": "Address & Contact", 
   "oldfieldtype": "Column Break"
  }, 
  {
+  "depends_on": "eval:doc.__islocal", 
+  "doctype": "DocField", 
+  "fieldname": "address_desc", 
+  "fieldtype": "HTML", 
+  "hidden": 0, 
+  "label": "Address Desc", 
+  "options": "<em>Addresses will appear only when you save the lead</em>", 
+  "print_hide": 1
+ }, 
+ {
+  "doctype": "DocField", 
+  "fieldname": "address_html", 
+  "fieldtype": "HTML", 
+  "hidden": 0, 
+  "label": "Address HTML", 
+  "print_hide": 0, 
+  "read_only": 1
+ }, 
+ {
+  "doctype": "DocField", 
+  "fieldname": "column_break2", 
+  "fieldtype": "Column Break"
+ }, 
+ {
   "doctype": "DocField", 
   "fieldname": "remark", 
   "fieldtype": "Small Text", 
@@ -221,70 +245,6 @@
  }, 
  {
   "doctype": "DocField", 
-  "fieldname": "column_break2", 
-  "fieldtype": "Column Break"
- }, 
- {
-  "doctype": "DocField", 
-  "fieldname": "address_line1", 
-  "fieldtype": "Data", 
-  "label": "Address Line 1", 
-  "oldfieldname": "address_line1", 
-  "oldfieldtype": "Data", 
-  "print_hide": 1, 
-  "reqd": 0
- }, 
- {
-  "doctype": "DocField", 
-  "fieldname": "address_line2", 
-  "fieldtype": "Data", 
-  "label": "Address Line 2", 
-  "oldfieldname": "address_line2", 
-  "oldfieldtype": "Data", 
-  "print_hide": 1
- }, 
- {
-  "doctype": "DocField", 
-  "fieldname": "city", 
-  "fieldtype": "Data", 
-  "label": "City", 
-  "oldfieldname": "city", 
-  "oldfieldtype": "Select", 
-  "print_hide": 1, 
-  "reqd": 0
- }, 
- {
-  "doctype": "DocField", 
-  "fieldname": "country", 
-  "fieldtype": "Select", 
-  "label": "Country", 
-  "oldfieldname": "country", 
-  "oldfieldtype": "Select", 
-  "options": "link:Country", 
-  "print_hide": 1, 
-  "reqd": 0
- }, 
- {
-  "doctype": "DocField", 
-  "fieldname": "state", 
-  "fieldtype": "Data", 
-  "label": "State", 
-  "oldfieldname": "state", 
-  "oldfieldtype": "Select", 
-  "options": "Suggest", 
-  "print_hide": 1
- }, 
- {
-  "doctype": "DocField", 
-  "fieldname": "pincode", 
-  "fieldtype": "Data", 
-  "label": "Pin Code", 
-  "oldfieldname": "pincode", 
-  "oldfieldtype": "Data", 
-  "print_hide": 1
- }, 
- {
-  "doctype": "DocField", 
   "fieldname": "more_info", 
   "fieldtype": "Section Break", 
   "label": "More Info", 
diff --git a/selling/doctype/quotation/quotation.txt b/selling/doctype/quotation/quotation.txt
index 1a01e16..b9772c8 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-06-27 11:31:49", 
+  "modified": "2013-06-28 12:47:10", 
   "modified_by": "Administrator", 
   "owner": "Administrator"
  }, 
@@ -691,6 +691,24 @@
   "search_index": 0
  }, 
  {
+  "doctype": "DocField", 
+  "fieldname": "shipping_address_name", 
+  "fieldtype": "Link", 
+  "hidden": 0, 
+  "label": "Shipping Address Name", 
+  "options": "Address", 
+  "print_hide": 1
+ }, 
+ {
+  "doctype": "DocField", 
+  "fieldname": "shipping_address", 
+  "fieldtype": "Small Text", 
+  "hidden": 1, 
+  "label": "Shipping Address", 
+  "print_hide": 1, 
+  "read_only": 1
+ }, 
+ {
   "depends_on": "customer", 
   "doctype": "DocField", 
   "fieldname": "col_break98", 
diff --git a/selling/doctype/sales_common/sales_common.js b/selling/doctype/sales_common/sales_common.js
index a027e9c..77e7759 100644
--- a/selling/doctype/sales_common/sales_common.js
+++ b/selling/doctype/sales_common/sales_common.js
@@ -27,6 +27,9 @@
 erpnext.selling.SellingController = erpnext.TransactionController.extend({
 	setup: function() {
 		this.frm.add_fetch("sales_partner", "commission_rate", "commission_rate");
+		
+		if(this.frm.fields_dict.shipping_address_name && this.frm.fields_dict.customer_address)
+			this.frm.fields_dict.shipping_address_name.get_query = this.frm.fields_dict['customer_address'].get_query;
 	},
 	
 	onload: function() {
@@ -476,6 +479,27 @@
 		});
 	},
 	
+	shipping_address_name: function () {
+		var me = this;
+		if(this.frm.doc.shipping_address_name) {
+			wn.model.with_doc("Address", this.frm.doc.shipping_address_name, function(name) {
+				var address = wn.model.get_doc("Address", name);
+			
+				var out = $.map(["address_line1", "address_line2", "city"], 
+					function(f) { return address[f]; });
+
+				var state_pincode = $.map(["state", "pincode"], function(f) { return address[f]; }).join(" ");
+				if(state_pincode) out.push(state_pincode);
+			
+				if(address["country"]) out.push(address["country"]);
+			
+				out.concat($.map([["Phone:", address["phone"]], ["Fax:", address["fax"]]], 
+					function(val) { return val[1] ? val.join(" ") : null; }));
+			
+				me.frm.set_value("shipping_address", out.join("\n"));
+			});
+		}
+	}
 });
 
 // to save previous state of cur_frm.cscript
diff --git a/selling/doctype/sales_order/sales_order.js b/selling/doctype/sales_order/sales_order.js
index d8aab21..d9e2d7b 100644
--- a/selling/doctype/sales_order/sales_order.js
+++ b/selling/doctype/sales_order/sales_order.js
@@ -79,29 +79,6 @@
 	if(doc.customer) get_server_fields('get_customer_address', JSON.stringify({customer: doc.customer, address: doc.customer_address, contact: doc.contact_person}),'', doc, dt, dn, 1);
 }
 
-cur_frm.fields_dict.shipping_address_name.get_query = cur_frm.fields_dict['customer_address'].get_query;
-
-cur_frm.cscript.shipping_address_name = function() {
-	if(cur_frm.doc.shipping_address_name) {
-		wn.model.with_doc("Address", cur_frm.doc.shipping_address_name, function(name) {
-			var address = wn.model.get_doc("Address", name);
-			
-			var out = $.map(["address_line1", "address_line2", "city"], 
-				function(f) { return address[f]; });
-
-			var state_pincode = $.map(["state", "pincode"], function(f) { return address[f]; }).join(" ");
-			if(state_pincode) out.push(state_pincode);
-			
-			if(address["country"]) out.push(address["country"]);
-			
-			out.concat($.map([["Phone:", address["phone"]], ["Fax:", address["fax"]]], 
-				function(val) { return val[1] ? val.join(" ") : null; }));
-			
-			cur_frm.set_value("shipping_address", out.join("\n"));
-		});
-	}
-};
-
 cur_frm.cscript.pull_quotation_details = function(doc,dt,dn) {
 	var callback = function(r,rt){
 		var doc = locals[cur_frm.doctype][cur_frm.docname];					
diff --git a/setup/doctype/contact_control/contact_control.js b/setup/doctype/contact_control/contact_control.js
index 79e9de7..c427ec0 100755
--- a/setup/doctype/contact_control/contact_control.js
+++ b/setup/doctype/contact_control/contact_control.js
@@ -59,8 +59,8 @@
 	// prepare data
 	data.fullname = data.address_type;
 	data.primary = '';
-	if (data.is_primary_address) data.primary += ' [Primary]';
-	if (data.is_shipping_address) data.primary += ' [Shipping]';
+	if (data.is_primary_address) data.primary += ' [Preferred for Billing]';
+	if (data.is_shipping_address) data.primary += ' [Preferred for Shipping]';
 	
 	// prepare address
 	var address = [];
diff --git a/utilities/doctype/address/address.py b/utilities/doctype/address/address.py
index cfcbea5..c475da1 100644
--- a/utilities/doctype/address/address.py
+++ b/utilities/doctype/address/address.py
@@ -27,7 +27,7 @@
 
 	def autoname(self):
 		if not self.doc.address_title:
-			self.doc.address_title = self.doc.customer or self.doc.supplier or self.doc.sales_partner
+			self.doc.address_title = self.doc.customer or self.doc.supplier or self.doc.sales_partner or self.doc.lead
 			
 		if self.doc.address_title:
 			self.doc.name = cstr(self.doc.address_title).strip() + "-" + cstr(self.doc.address_type).strip()
@@ -35,40 +35,32 @@
 		else:
 			webnotes.msgprint("""Address Title is mandatory.""", raise_exception=True)
 		
-
 	def validate(self):
 		self.validate_primary_address()
 		self.validate_shipping_address()
 	
 	def validate_primary_address(self):
 		"""Validate that there can only be one primary address for particular customer, supplier"""
-		sql = webnotes.conn.sql
 		if self.doc.is_primary_address == 1:
-			if self.doc.customer: 
-				sql("update tabAddress set is_primary_address=0 where customer = '%s'" % (self.doc.customer))
-			elif self.doc.supplier:
-				sql("update tabAddress set is_primary_address=0 where supplier = '%s'" % (self.doc.supplier))
-			elif self.doc.sales_partner:
-				sql("update tabAddress set is_primary_address=0 where sales_partner = '%s'" % (self.doc.sales_partner))
-		elif not self.doc.is_shipping_address:
-			if self.doc.customer: 
-				if not sql("select name from tabAddress where is_primary_address=1 and customer = '%s'" % (self.doc.customer)):
-					self.doc.is_primary_address = 1
-			elif self.doc.supplier:
-				if not sql("select name from tabAddress where is_primary_address=1 and supplier = '%s'" % (self.doc.supplier)):
-					self.doc.is_primary_address = 1
-			elif self.doc.sales_partner:
-				if not sql("select name from tabAddress where is_primary_address=1 and sales_partner = '%s'" % (self.doc.sales_partner)):
-					self.doc.is_primary_address = 1
-
+			self._unset_other("is_primary_address")
+			
+		elif self.doc.is_shipping_address != 1:
+			for fieldname in ["customer", "supplier", "sales_partner", "lead"]:
+				if self.doc.fields.get(fieldname):
+					if not webnotes.conn.sql("""select name from `tabAddress` where is_primary_address=1
+						and `%s`=%s and name!=%s""" % (fieldname, "%s", "%s"), 
+						(self.doc.fields[fieldname], self.doc.name)):
+							self.doc.is_primary_address = 1
+					break
 				
 	def validate_shipping_address(self):
 		"""Validate that there can only be one shipping address for particular customer, supplier"""
-		sql = webnotes.conn.sql
 		if self.doc.is_shipping_address == 1:
-			if self.doc.customer: 
-				sql("update tabAddress set is_shipping_address=0 where customer = '%s'" % (self.doc.customer))
-			elif self.doc.supplier:
-				sql("update tabAddress set is_shipping_address=0 where supplier = '%s'" % (self.doc.supplier))			
-			elif self.doc.sales_partner:
-				sql("update tabAddress set is_shipping_address=0 where sales_partner = '%s'" % (self.doc.sales_partner))			
+			self._unset_other("is_shipping_address")
+			
+	def _unset_other(self, is_address_type):
+		for fieldname in ["customer", "supplier", "sales_partner", "lead"]:
+			if self.doc.fields.get(fieldname):
+				webnotes.conn.sql("""update `tabAddress` set `%s`=0 where `%s`=%s and name!=%s""" %
+					(is_address_type, fieldname, "%s", "%s"), (self.doc.fields[fieldname], self.doc.name))
+				break
\ No newline at end of file
diff --git a/utilities/doctype/address/address.txt b/utilities/doctype/address/address.txt
index 757beb9..ed39c75 100644
--- a/utilities/doctype/address/address.txt
+++ b/utilities/doctype/address/address.txt
@@ -2,7 +2,7 @@
  {
   "creation": "2013-01-10 16:34:32", 
   "docstatus": 0, 
-  "modified": "2013-01-29 13:24:45", 
+  "modified": "2013-06-28 17:06:32", 
   "modified_by": "Administrator", 
   "owner": "Administrator"
  }, 
@@ -46,11 +46,11 @@
   "label": "Address Details"
  }, 
  {
-  "description": "e.g. Office, Billing, Shipping", 
   "doctype": "DocField", 
   "fieldname": "address_type", 
-  "fieldtype": "Data", 
+  "fieldtype": "Select", 
   "label": "Address Type", 
+  "options": "Billing\nShipping\nOffice\nPersonal\nPlant\nPostal\nShop\nSubsidiary\nWarehouse\nOther", 
   "reqd": 1
  }, 
  {
@@ -145,7 +145,7 @@
   "doctype": "DocField", 
   "fieldname": "is_primary_address", 
   "fieldtype": "Check", 
-  "label": "Is Primary Address"
+  "label": "Preferred Billing Address"
  }, 
  {
   "default": "0", 
@@ -154,7 +154,7 @@
   "fieldname": "is_shipping_address", 
   "fieldtype": "Check", 
   "in_list_view": 1, 
-  "label": "Is Shipping Address"
+  "label": "Preferred Shipping Address"
  }, 
  {
   "doctype": "DocField", 
@@ -208,6 +208,27 @@
   "options": "Sales Partner"
  }, 
  {
+  "doctype": "DocField", 
+  "fieldname": "column_break_22", 
+  "fieldtype": "Column Break"
+ }, 
+ {
+  "depends_on": "eval:!doc.supplier && !doc.sales_partner", 
+  "doctype": "DocField", 
+  "fieldname": "lead", 
+  "fieldtype": "Link", 
+  "label": "Lead", 
+  "options": "Lead"
+ }, 
+ {
+  "depends_on": "eval:!doc.supplier && !doc.sales_partner", 
+  "doctype": "DocField", 
+  "fieldname": "lead_name", 
+  "fieldtype": "Data", 
+  "label": "Lead Name", 
+  "read_only": 1
+ }, 
+ {
   "doctype": "DocPerm", 
   "role": "Sales User"
  }, 
diff --git a/utilities/transaction_base.py b/utilities/transaction_base.py
index c86a50e..2def0ea 100644
--- a/utilities/transaction_base.py
+++ b/utilities/transaction_base.py
@@ -170,21 +170,30 @@
 		
 	# Get Lead Details
 	# -----------------------
-	def get_lead_details(self, name):		
-		details = webnotes.conn.sql("select name, lead_name, address_line1, address_line2, city, country, state, pincode, territory, phone, mobile_no, email_id, company_name from `tabLead` where name = '%s'" %(name), as_dict = 1)		
-		
-		extract = lambda x: details and details[0] and details[0].get(x,'') or ''
-		address_fields = [('','address_line1'),('\n','address_line2'),('\n','city'),(' ','pincode'),('\n','state'),('\n','country'),('\nPhone: ','contact_no')]
-		address_display = ''.join([a[0]+extract(a[1]) for a in address_fields if extract(a[1])])
-		if address_display.startswith('\n'): address_display = address_display[1:]
+	def get_lead_details(self, name):
+		details = webnotes.conn.sql("""select name, lead_name, address_line1, address_line2, city, country, state, pincode
+			from `tabAddress` where lead=%s""", name, as_dict=True)
+		lead = webnotes.conn.get_value("Lead", name, 
+			["territory", "phone", "mobile_no", "email_id", "company_name", "lead_name"], as_dict=True) or {}
+
+		address_display = ""
+		if details:
+			details = details[0]
+			for separator, fieldname in (('','address_line1'), ('\n','address_line2'), ('\n','city'), 
+				(' ','pincode'), ('\n','state'), ('\n','country'), ('\nPhone: ', 'phone')):
+					if details.get(fieldname):
+						address_display += separator + details.get(fieldname)
+
+		if address_display.startswith('\n'):
+			address_display = address_display[1:]
 		
 		ret = {
-			'contact_display' : extract('lead_name'),
+			'contact_display' : lead.get('lead_name'),
 			'address_display' : address_display,
-			'territory' : extract('territory'),
-			'contact_mobile' : extract('mobile_no'),
-			'contact_email' : extract('email_id'),
-			'customer_name' : extract('company_name') or extract('lead_name')
+			'territory' : lead.get('territory'),
+			'contact_mobile' : lead.get('mobile_no'),
+			'contact_email' : lead.get('email_id'),
+			'customer_name' : lead.get('company_name') or lead.get('lead_name')
 		}
 		return ret
 		
