create customer from POS
diff --git a/erpnext/accounts/doctype/sales_invoice/pos.py b/erpnext/accounts/doctype/sales_invoice/pos.py
index 3619e98..f5721e8 100644
--- a/erpnext/accounts/doctype/sales_invoice/pos.py
+++ b/erpnext/accounts/doctype/sales_invoice/pos.py
@@ -41,6 +41,7 @@
 		'pos_profile': pos_profile,
 		'meta': {
 			'invoice': frappe.get_meta('Sales Invoice'),
+			'customer': frappe.get_meta('Customer'),
 			'items': frappe.get_meta('Sales Invoice Item'),
 			'taxes': frappe.get_meta('Sales Taxes and Charges')
 		}
diff --git a/erpnext/accounts/page/pos/pos.js b/erpnext/accounts/page/pos/pos.js
index c0f82bc..cae2d99 100644
--- a/erpnext/accounts/page/pos/pos.js
+++ b/erpnext/accounts/page/pos/pos.js
@@ -325,6 +325,7 @@
 
 		$.each(this.meta, function(i, data){
 			frappe.meta.sync(data)
+			locals["DocType"][data.name] = data;
 		})
 
 		this.print_template_data = frappe.render_template("print_template",
@@ -412,21 +413,26 @@
 			autoFocus: true,
 			source: function (request, response) {
 				me.customer_data = me.get_customers(request.term)
+				me.add_customer();
+
 				response($.map(me.customer_data, function(data){
-					return {label: data.name, value: data.name,
-						customer_group: data.customer_group, territory: data.territory}
+					return {label: data.name, customer_name: data.name, customer_group: data.customer_group,
+						territory: data.territory, onclick: data.onclick}
 				}))
 			},
-			change: function(event, ui){
-				if(ui.item){
-					me.frm.doc.customer = ui.item.label;
-					me.frm.doc.customer_name = ui.item.customer_name;
-					me.frm.doc.customer_group = ui.item.customer_group;
-					me.frm.doc.territory = ui.item.territory;
-				}else{
-					me.frm.doc.customer = me.party_field.$input.val();
+			select: function(event, ui){
+				if(ui.item.onclick) {
+					ui.item.value = ""
+					ui.item.onclick(me);
+				}else if(ui.item) {
+					me.update_customer_data(ui.item)
 				}
 				me.refresh();
+			},
+			change: function(event, ui) {
+				if(!ui.item) {
+					me.frm.doc.customer = $(this).val();
+				}
 			}
 		}).on("focus", function(){
 			setTimeout(function() {
@@ -434,7 +440,43 @@
 					me.party_field.$input.autocomplete( "search", " " );
 				}
 			}, 500);
-		});
+		}).autocomplete(this.party_field).data('ui-autocomplete')._renderItem = function(ul, d){
+			var html = "<span>" + __(d.label) + "</span>";
+			return $('<li></li>')
+				.data('item.autocomplete', d)
+				.html('<a><p>' + html + '</p></a>')
+				.appendTo(ul);
+		}
+	},
+
+	add_customer: function() {
+		var me = this;
+		if(this.connection_status) {
+			this.customer_data.push({
+				name: "<span class='text-primary link-option'>"
+					+ "<i class='fa fa-plus' style='margin-right: 5px;'></i> "
+					+ __("Create a new Customer")
+					+ "</span>",
+				onclick: me.new_customer
+			});
+		}
+	},
+
+	new_customer: function(obj) {
+		var me = obj;
+		frappe.ui.form.quick_entry('Customer', function(doc){
+			me.customers.push(doc)
+			me.party_field.$input.val(doc.name);
+			me.update_customer_data(doc)
+		})
+	},
+
+	update_customer_data: function(doc) {
+		var me = this;
+		this.frm.doc.customer = doc.label || doc.name;
+		this.frm.doc.customer_name = doc.customer_name;
+		this.frm.doc.customer_group = doc.customer_group;
+		this.frm.doc.territory = doc.territory;
 	},
 
 	get_customers: function(key){