diff --git a/accounts/doctype/purchase_invoice/purchase_invoice.js b/accounts/doctype/purchase_invoice/purchase_invoice.js
index 2428a7d..fb5569a 100644
--- a/accounts/doctype/purchase_invoice/purchase_invoice.js
+++ b/accounts/doctype/purchase_invoice/purchase_invoice.js
@@ -8,6 +8,7 @@
 wn.provide("erpnext.accounts");
 wn.require('app/accounts/doctype/purchase_taxes_and_charges_master/purchase_taxes_and_charges_master.js');
 wn.require('app/buying/doctype/purchase_common/purchase_common.js');
+wn.require('app/accounts/doctype/sales_invoice/pos.js');
 
 erpnext.accounts.PurchaseInvoice = erpnext.buying.BuyingController.extend({
 	onload: function() {
diff --git a/accounts/doctype/sales_invoice/pos.js b/accounts/doctype/sales_invoice/pos.js
index 67c4b93..ee34440 100644
--- a/accounts/doctype/sales_invoice/pos.js
+++ b/accounts/doctype/sales_invoice/pos.js
@@ -7,7 +7,7 @@
 		this.frm = frm;
 		this.wrapper.html('<div class="container">\
 			<div class="row">\
-				<div class="customer-area col-sm-3 col-xs-6"></div>\
+				<div class="party-area col-sm-3 col-xs-6"></div>\
 				<div class="barcode-area col-sm-3 col-xs-6"></div>\
 				<div class="search-area col-sm-3 col-xs-6"></div>\
 				<div class="item-group-area col-sm-3 col-xs-6"></div>\
@@ -88,29 +88,31 @@
 		});
 	},
 	make: function() {
-		this.make_customer();
+		this.make_party();
 		this.make_item_group();
 		this.make_search();
 		this.make_barcode();
 		this.make_item_list();
 	},
-	make_customer: function() {
+	make_party: function() {
 		var me = this;
-		console.log(this.frm);
-		this.customer = wn.ui.form.make_control({
+		this.party = wn.meta.has_field(cur_frm.doc.doctype, "customer") ?"Customer" : "Supplier";
+			
+		this.party_field = wn.ui.form.make_control({
 			df: {
 				"fieldtype": "Link",
-				"options": "Customer",
-				"label": "Customer",
-				"fieldname": "pos_customer",
-				"placeholder": "Customer"
+				"options": this.party,
+				"label": this.party,
+				"fieldname": "pos_party",
+				"placeholder": this.party
 			},
-			parent: this.wrapper.find(".customer-area")
+			parent: this.wrapper.find(".party-area")
 		});
-		this.customer.make_input();
-		this.customer.$input.on("change", function() {
-			if(!me.customer.autocomplete_open)
-				wn.model.set_value(this.frm.doctype, me.frm.docname, "customer", this.value);
+		this.party_field.make_input();
+		this.party_field.$input.on("change", function() {
+			if(!me.party_field.autocomplete_open)
+				wn.model.set_value(me.frm.doctype, me.frm.docname, 
+					me.party.toLowerCase(), this.value);
 		});
 	},
 	make_item_group: function() {
@@ -169,10 +171,17 @@
 	},
 	make_item_list: function() {
 		var me = this;
+		var price_list = wn.meta.has_field(this.frm.doc.doctype, "selling_price_list") ?
+			this.frm.doc.selling_price_list : this.frm.doc.buying_price_list;
+
+		var sales_or_purchase = wn.meta.has_field(this.frm.doc.doctype, "selling_price_list") ?
+			"Sales" : "Purchase";
+		
 		wn.call({
 			method: 'accounts.doctype.sales_invoice.pos.get_items',
 			args: {
-				price_list: cur_frm.doc.selling_price_list,
+				sales_or_purchase: sales_or_purchase,
+				price_list: price_list,
 				item_group: this.item_group.$input.val(),
 				item: this.search.$input.val()
 			},
@@ -203,8 +212,8 @@
 				// if form is local then allow this function
 				if (cur_frm.doc.docstatus===0) {
 					$("div.pos-item").on("click", function() {
-						if(!cur_frm.doc.customer) {
-							msgprint("Please select customer first.");
+						if(!cur_frm.doc[me.party.toLowerCase()]) {
+							msgprint("Please select " + me.party + " first.");
 							return;
 						}
 						me.add_to_cart($(this).attr("data-item_code"));
@@ -222,8 +231,8 @@
 
 		// check whether the item is already added
 		if (no_of_items != 0) {
-			$.each(wn.model.get_children(this.frm.doctype + " Item", this.frm.doc.name, "entries", 
-			this.frm.doctype), function(i, d) {
+			$.each(wn.model.get_children(this.frm.doctype + " Item", this.frm.doc.name, 
+				this.frm.cscript.fname,	this.frm.doctype), function(i, d) {
 				if (d.item_code == item_code)
 					caught = true;
 			});
@@ -234,15 +243,16 @@
 			me.update_qty(item_code, 1);
 		}
 		else {
-			var child = wn.model.add_child(me.frm.doc, this.frm.doctype + " Item", "entries");
+			var child = wn.model.add_child(me.frm.doc, this.frm.doctype + " Item", 
+				this.frm.cscript.fname);
 			child.item_code = item_code;
 			me.frm.cscript.item_code(me.frm.doc, child.doctype, child.name);
 		}
 	},
 	update_qty: function(item_code, qty, textbox_qty) {
 		var me = this;
-		$.each(wn.model.get_children(this.frm.doctype + " Item", this.frm.doc.name, "entries", 
-		this.frm.doctype), function(i, d) {
+		$.each(wn.model.get_children(this.frm.doctype + " Item", this.frm.doc.name, 
+			this.frm.cscript.fname, this.frm.doctype), function(i, d) {
 			if (d.item_code == item_code) {
 				if (textbox_qty) {
 					if (qty == 0 && d.item_code == item_code)
@@ -260,14 +270,14 @@
 	},
 	refresh: function() {
 		var me = this;
-		this.customer.set_input(this.frm.doc.customer);
+		this.party_field.set_input(this.frm.doc[this.party.toLowerCase()]);
 		this.barcode.set_input("");
 
 		// add items
 		var $items = me.wrapper.find("#cart tbody").empty();
 
-		$.each(wn.model.get_children(this.frm.doctype + " Item", this.frm.doc.name, "entries", 
-			this.frm.doctype), function(i, d) {
+		$.each(wn.model.get_children(this.frm.doctype + " Item", this.frm.doc.name, 
+			this.frm.cscript.fname, this.frm.doctype), function(i, d) {
 			$(repl('<tr id="%(item_code)s" data-selected="false">\
 					<td>%(item_code)s%(item_name)s</td>\
 					<td><input type="text" value="%(qty)s" \
@@ -379,17 +389,16 @@
 			}
 		}
 		
-		var child = wn.model.get_children(this.frm.doctype + " Item", this.frm.doc.name, "entries", 
-		this.frm.doctype);
+		var child = wn.model.get_children(this.frm.doctype + " Item", this.frm.doc.name, 
+			this.frm.cscript.fname, this.frm.doctype);
 		$.each(child, function(i, d) {
 			for (var i in selected_items) {
 				if (d.item_code == selected_items[i]) {
-					// cur_frm.fields_dict["entries"].grid.grid_rows[d.idx].remove();
 					wn.model.clear_doc(d.doctype, d.name);
 				}
 			}
 		});
-		cur_frm.fields_dict["entries"].grid.refresh();
+		cur_frm.fields_dict[this.frm.cscript.fname].grid.refresh();
 		cur_frm.script_manager.trigger("calculate_taxes_and_totals");
 		me.frm.dirty();
 		me.refresh();
diff --git a/accounts/doctype/sales_invoice/pos.py b/accounts/doctype/sales_invoice/pos.py
index 08340f7..d919c1b 100644
--- a/accounts/doctype/sales_invoice/pos.py
+++ b/accounts/doctype/sales_invoice/pos.py
@@ -3,17 +3,22 @@
 
 from __future__ import unicode_literals
 import webnotes
-from webnotes import msgprint
+from webnotes import msgprint, errprint
 
 @webnotes.whitelist()
-def get_items(price_list, item=None, item_group=None):
+def get_items(price_list, sales_or_purchase, item=None, item_group=None):
 	condition = ""
 	
+	if sales_or_purchase == "Sales":
+		condition = "i.is_sales_item='Yes'"
+	else:
+		condition = "i.is_purchase_item='Yes'"
+	
 	if item_group and item_group != "All Item Groups":
-		condition = "and i.item_group='%s'" % item_group
+		condition += " and i.item_group='%s'" % item_group
 
 	if item:
-		condition = "and i.name='%s'" % item
+		condition += " and i.name='%s'" % item
 
 	return webnotes.conn.sql("""select i.name, i.item_name, i.image, 
 		pl_items.ref_rate, pl_items.currency 
@@ -24,7 +29,7 @@
 		ON
 			pl_items.item_code=i.name
 		where
-			i.is_sales_item='Yes'%s""" % ('%s', condition), (price_list), as_dict=1)
+			%s""" % ('%s', condition), (price_list), as_dict=1)
 
 @webnotes.whitelist()
 def get_item_from_barcode(barcode):
diff --git a/accounts/doctype/sales_invoice/sales_invoice.css b/accounts/doctype/sales_invoice/sales_invoice.css
deleted file mode 100644
index e4b61b6..0000000
--- a/accounts/doctype/sales_invoice/sales_invoice.css
+++ /dev/null
@@ -1,15 +0,0 @@
-.pos-item {
-	height: 200px;
-	overflow: hidden;
-	cursor: pointer;
-	padding-left: 5px !important;
-	padding-right: 5px !important;
-}
-
-.pos-bill {
-	padding: 20px 5px;
-	font-family: Monospace;
-	border: 1px solid #eee;
-    -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
-            box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
-}
\ No newline at end of file
diff --git a/accounts/doctype/sales_invoice/sales_invoice.js b/accounts/doctype/sales_invoice/sales_invoice.js
index e49d97c..e07ed28 100644
--- a/accounts/doctype/sales_invoice/sales_invoice.js
+++ b/accounts/doctype/sales_invoice/sales_invoice.js
@@ -78,6 +78,7 @@
 				cur_frm.add_custom_button('Make Payment Entry', cur_frm.cscript.make_bank_voucher);
 		}
 
+		// Show buttons only when pos view is active
 		if (doc.docstatus===0 && !this.pos_active) {
 			cur_frm.cscript.sales_order_btn();
 			cur_frm.cscript.delivery_note_btn();
diff --git a/buying/doctype/purchase_order/purchase_order.js b/buying/doctype/purchase_order/purchase_order.js
index a960046..9967f15 100644
--- a/buying/doctype/purchase_order/purchase_order.js
+++ b/buying/doctype/purchase_order/purchase_order.js
@@ -10,6 +10,7 @@
 wn.require('app/accounts/doctype/purchase_taxes_and_charges_master/purchase_taxes_and_charges_master.js');
 wn.require('app/utilities/doctype/sms_control/sms_control.js');
 wn.require('app/buying/doctype/purchase_common/purchase_common.js');
+wn.require('app/accounts/doctype/sales_invoice/pos.js');
 
 erpnext.buying.PurchaseOrderController = erpnext.buying.BuyingController.extend({
 	refresh: function(doc, cdt, cdn) {
diff --git a/buying/doctype/supplier_quotation/supplier_quotation.js b/buying/doctype/supplier_quotation/supplier_quotation.js
index cd6127d..3fba931 100644
--- a/buying/doctype/supplier_quotation/supplier_quotation.js
+++ b/buying/doctype/supplier_quotation/supplier_quotation.js
@@ -9,6 +9,7 @@
 // attach required files
 wn.require('app/accounts/doctype/purchase_taxes_and_charges_master/purchase_taxes_and_charges_master.js');
 wn.require('app/buying/doctype/purchase_common/purchase_common.js');
+wn.require('app/accounts/doctype/sales_invoice/pos.js');
 
 erpnext.buying.SupplierQuotationController = erpnext.buying.BuyingController.extend({
 	refresh: function() {
diff --git a/public/js/startup.css b/public/js/startup.css
index ab70ee4..c3b7276 100644
--- a/public/js/startup.css
+++ b/public/js/startup.css
@@ -29,4 +29,21 @@
 	width: 32px; 
 	height: 32px; 
 	margin: -10px auto;
+}
+
+/* pos */
+.pos-item {
+	height: 200px;
+	overflow: hidden;
+	cursor: pointer;
+	padding-left: 5px !important;
+	padding-right: 5px !important;
+}
+
+.pos-bill {
+	padding: 20px 5px;
+	font-family: Monospace;
+	border: 1px solid #eee;
+    -webkit-box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
+            box-shadow: 0 6px 12px rgba(0, 0, 0, 0.175);
 }
\ No newline at end of file
diff --git a/public/js/transaction.js b/public/js/transaction.js
index 58dbc2d..a38e3a7 100644
--- a/public/js/transaction.js
+++ b/public/js/transaction.js
@@ -88,7 +88,11 @@
 	},
 
 	toggle_pos: function(show) {
-		if (!this.frm.doc.selling_price_list)
+		// Check whether it is Selling or Buying cycle
+		var price_list = wn.meta.has_field(cur_frm.doc.doctype, "selling_price_list") ?
+			this.frm.doc.selling_price_list : this.frm.doc.buying_price_list;
+		
+		if (!price_list)
 			msgprint(wn._("Please select Price List"))
 		else {
 			if((show===true && this.pos_active) || (show===false && !this.pos_active)) return;
@@ -106,6 +110,7 @@
 			// refresh
 			if(this.pos_active)
 				this.frm.pos.refresh();
+			this.frm.refresh();
 		}
 	},
 	
diff --git a/selling/doctype/quotation/quotation.js b/selling/doctype/quotation/quotation.js
index ea1b62a..33ba093 100644
--- a/selling/doctype/quotation/quotation.js
+++ b/selling/doctype/quotation/quotation.js
@@ -11,6 +11,7 @@
 wn.require('app/accounts/doctype/sales_taxes_and_charges_master/sales_taxes_and_charges_master.js');
 wn.require('app/utilities/doctype/sms_control/sms_control.js');
 wn.require('app/selling/doctype/sales_common/sales_common.js');
+wn.require('app/accounts/doctype/sales_invoice/pos.js');
 
 erpnext.selling.QuotationController = erpnext.selling.SellingController.extend({
 	onload: function(doc, dt, dn) {
diff --git a/stock/doctype/delivery_note/delivery_note.js b/stock/doctype/delivery_note/delivery_note.js
index 80c2646..0413b72 100644
--- a/stock/doctype/delivery_note/delivery_note.js
+++ b/stock/doctype/delivery_note/delivery_note.js
@@ -10,6 +10,7 @@
 wn.require('app/accounts/doctype/sales_taxes_and_charges_master/sales_taxes_and_charges_master.js');
 wn.require('app/utilities/doctype/sms_control/sms_control.js');
 wn.require('app/selling/doctype/sales_common/sales_common.js');
+wn.require('app/accounts/doctype/sales_invoice/pos.js');
 
 wn.provide("erpnext.stock");
 erpnext.stock.DeliveryNoteController = erpnext.selling.SellingController.extend({
diff --git a/stock/doctype/purchase_receipt/purchase_receipt.js b/stock/doctype/purchase_receipt/purchase_receipt.js
index 8775140..5333c21 100644
--- a/stock/doctype/purchase_receipt/purchase_receipt.js
+++ b/stock/doctype/purchase_receipt/purchase_receipt.js
@@ -8,6 +8,7 @@
 wn.require('app/accounts/doctype/purchase_taxes_and_charges_master/purchase_taxes_and_charges_master.js');
 wn.require('app/utilities/doctype/sms_control/sms_control.js');
 wn.require('app/buying/doctype/purchase_common/purchase_common.js');
+wn.require('app/accounts/doctype/sales_invoice/pos.js');
 
 wn.provide("erpnext.stock");
 erpnext.stock.PurchaseReceiptController = erpnext.buying.BuyingController.extend({
