diff --git a/erpnext/public/js/controllers/transaction.js b/erpnext/public/js/controllers/transaction.js
index 49f47e0..4c81b42 100644
--- a/erpnext/public/js/controllers/transaction.js
+++ b/erpnext/public/js/controllers/transaction.js
@@ -865,12 +865,48 @@
 })
 
 frappe.ui.form.on(cur_frm.doctype, "apply_discount_on", function(frm) {
-	cur_frm.cscript.calculate_taxes_and_totals();
+	if(frm.doc.additional_discount_percentage) {
+		frm.trigger("additional_discount_percentage");
+	} else {
+		cur_frm.cscript.calculate_taxes_and_totals();
+	}
 })
 
+frappe.ui.form.on(cur_frm.doctype, "additional_discount_percentage", function(frm) {
+	if (frm.via_discount_amount) {
+		return;
+	}
+	
+	if(!frm.doc.apply_discount_on) {
+		frappe.msgprint(__("Please set 'Apply Additional Discount On'"));
+		return
+	}
+	
+	frm.via_discount_percentage = true;
+	
+	if(frm.doc.additional_discount_percentage && frm.doc.discount_amount) {
+		// Reset discount amount and net / grand total
+		frm.set_value("discount_amount", 0);
+	}
+	
+	var total = flt(frm.doc[frappe.model.scrub(frm.doc.apply_discount_on)]);
+	var discount_amount = flt(total*flt(frm.doc.additional_discount_percentage) / 100, 
+		precision("discount_amount"));
+		
+	frm.set_value("discount_amount", discount_amount);
+	delete frm.via_discount_percentage;
+});
+
 frappe.ui.form.on(cur_frm.doctype, "discount_amount", function(frm) {
-	cur_frm.cscript.set_dynamic_labels();
-	cur_frm.cscript.calculate_taxes_and_totals();
-})
+	frm.cscript.set_dynamic_labels();
+	
+	if (!frm.via_discount_percentage) {
+		frm.via_discount_amount = true;
+		frm.set_value("additional_discount_percentage", 0);
+		delete frm.via_discount_amount;
+	}
+	
+	frm.cscript.calculate_taxes_and_totals();
+});
 
 
diff --git a/erpnext/public/js/pos/pos.html b/erpnext/public/js/pos/pos.html
index 1c337f4..d12b9b2 100644
--- a/erpnext/public/js/pos/pos.html
+++ b/erpnext/public/js/pos/pos.html
@@ -25,17 +25,25 @@
 						</div>
                     </div>
                     <div class="row pos-bill-row discount-amount-area">
-                        <div class="col-xs-6"><h6 class="text-muted">{%= __("Discount Amount") %}</h6></div>
-                        <div class="col-xs-6"><input type="text" class="form-control discount-amount text-right"></div>
+                        <div class="col-xs-6"><h6 class="text-muted">{%= __("Discount") %}</h6></div>
+						<div class="col-xs-3 discount-field-col">
+							<div class="input-group input-group-sm">
+								<span class="input-group-addon">%</span>
+								<input type="text" class="form-control discount-percentage text-right">
+							</div>
+						</div>
+                        <div class="col-xs-3 discount-field-col">
+							<div class="input-group input-group-sm">
+								<span class="input-group-addon">{%= get_currency_symbol(currency) %}</span>
+								<input type="text" class="form-control discount-amount text-right"
+							  		placeholder="{%= 0.00 %}">
+							</div>
+						</div>
                     </div>
                     <div class="row pos-bill-row grand-total-area">
                         <div class="col-xs-6"><h6>{%= __("Grand Total") %}</h6></div>
                         <div class="col-xs-6"><h6 class="grand-total text-right"></h6></div>
                     </div>
-                    <!-- <div class="row pos-bill-row paid-amount-area">
-                        <div class="col-xs-6"><h6 class="text-muted">{%= __("Amount Paid") %}</h6></div>
-                        <div class="col-xs-6"><input type="text" class="form-control paid-amount text-right"></div>
-                    </div> -->
     			</div>
     		</div>
     	</div>
diff --git a/erpnext/public/js/pos/pos.js b/erpnext/public/js/pos/pos.js
index 02eeab0..a348138 100644
--- a/erpnext/public/js/pos/pos.js
+++ b/erpnext/public/js/pos/pos.js
@@ -7,7 +7,7 @@
 	init: function(wrapper, frm) {
 		this.wrapper = wrapper;
 		this.frm = frm;
-		this.wrapper.html(frappe.render_template("pos", {}));
+		this.wrapper.html(frappe.render_template("pos", {currency: this.frm.currency}));
 
 		this.check_transaction_type();
 		this.make();
@@ -16,6 +16,11 @@
 		$(this.frm.wrapper).on("refresh-fields", function() {
 			me.refresh();
 		});
+		
+		this.wrapper.find('input.discount-percentage').on("change", function() {
+			frappe.model.set_value(me.frm.doctype, me.frm.docname, 
+				"additional_discount_percentage", flt(this.value));
+		});
 
 		this.wrapper.find('input.discount-amount').on("change", function() {
 			frappe.model.set_value(me.frm.doctype, me.frm.docname, "discount_amount", flt(this.value));
@@ -230,6 +235,7 @@
 	},
 	refresh_fields: function() {
 		this.party_field.set_input(this.frm.doc[this.party.toLowerCase()]);
+		this.wrapper.find('input.discount-percentage').val(this.frm.doc.additional_discount_percentage);
 		this.wrapper.find('input.discount-amount').val(this.frm.doc.discount_amount);
 
 		this.show_items_in_item_cart();
