Given provision to enter write off and change amount on POS
diff --git a/erpnext/accounts/doctype/pos_profile/pos_profile.json b/erpnext/accounts/doctype/pos_profile/pos_profile.json
index 8882491..0ab48e2 100644
--- a/erpnext/accounts/doctype/pos_profile/pos_profile.json
+++ b/erpnext/accounts/doctype/pos_profile/pos_profile.json
@@ -122,6 +122,32 @@
    "allow_on_submit": 0, 
    "bold": 0, 
    "collapsible": 0, 
+   "fieldname": "campaign", 
+   "fieldtype": "Link", 
+   "hidden": 0, 
+   "ignore_user_permissions": 0, 
+   "ignore_xss_filter": 0, 
+   "in_filter": 0, 
+   "in_list_view": 0, 
+   "label": "Campaign", 
+   "length": 0, 
+   "no_copy": 0, 
+   "options": "Campaign", 
+   "permlevel": 0, 
+   "precision": "", 
+   "print_hide": 0, 
+   "print_hide_if_no_value": 0, 
+   "read_only": 0, 
+   "report_hide": 0, 
+   "reqd": 0, 
+   "search_index": 0, 
+   "set_only_once": 0, 
+   "unique": 0
+  }, 
+  {
+   "allow_on_submit": 0, 
+   "bold": 0, 
+   "collapsible": 0, 
    "fieldname": "ignore_pricing_rule", 
    "fieldtype": "Check", 
    "hidden": 0, 
@@ -859,7 +885,7 @@
  "issingle": 0, 
  "istable": 0, 
  "max_attachments": 0, 
- "modified": "2016-08-06 17:05:59.990031", 
+ "modified": "2016-08-09 02:36:07.316464", 
  "modified_by": "Administrator", 
  "module": "Accounts", 
  "name": "POS Profile", 
diff --git a/erpnext/accounts/doctype/sales_invoice/pos.py b/erpnext/accounts/doctype/sales_invoice/pos.py
index 53144cb..5cb9f76 100644
--- a/erpnext/accounts/doctype/sales_invoice/pos.py
+++ b/erpnext/accounts/doctype/sales_invoice/pos.py
@@ -35,7 +35,6 @@
 		'customers': get_customers(pos_profile, doc),
 		'pricing_rules': get_pricing_rules(doc),
 		'print_template': print_template,
-		'write_off_account': pos_profile.get('write_off_account'),
 		'meta': {
 			'invoice': frappe.get_meta('Sales Invoice'),
 			'items': frappe.get_meta('Sales Invoice Item'),
@@ -45,7 +44,12 @@
 
 def update_pos_profile_data(doc, pos_profile):
 	company_data = frappe.db.get_value('Company', doc.company, '*', as_dict=1)
+	doc.campaign = pos_profile.get('campaign')
 
+	doc.write_off_account = pos_profile.get('write_off_account') or \
+		company_data.write_off_account
+	doc.change_amount_account = pos_profile.get('change_amount_account') or \
+		company_data.default_cash_account
 	doc.taxes_and_charges = pos_profile.get('taxes_and_charges')
 	if doc.taxes_and_charges:
 		update_tax_table(doc)
@@ -54,7 +58,8 @@
 	doc.conversion_rate = 1.0
 	if doc.currency != company_data.default_currency:
 		doc.conversion_rate = get_exchange_rate(doc.currency, company_data.default_currency)
-	doc.selling_price_list = pos_profile.get('selling_price_list') or frappe.db.get_value('Selling Settings', None, 'selling_price_list')
+	doc.selling_price_list = pos_profile.get('selling_price_list') or \
+		frappe.db.get_value('Selling Settings', None, 'selling_price_list')
 	doc.naming_series = pos_profile.get('naming_series') or 'SINV-'
 	doc.letter_head = pos_profile.get('letter_head') or company_data.default_letter_head
 	doc.ignore_pricing_rule = pos_profile.get('ignore_pricing_rule') or 0
@@ -157,10 +162,11 @@
 def get_pricing_rules(doc):
 	pricing_rules = ""
 	if doc.ignore_pricing_rule == 0:
-		pricing_rules = frappe.db.sql(""" Select * from `tabPricing Rule` where docstatus < 2 and disable = 0
-						and selling = 1 and ifnull(company, '') in (%(company)s, '') and
-						ifnull(for_price_list, '') in (%(price_list)s, '')  and %(date)s between
-						ifnull(valid_from, '2000-01-01') and ifnull(valid_upto, '2500-12-31') order by priority desc, name desc""",
+		pricing_rules = frappe.db.sql(""" Select * from `tabPricing Rule` where docstatus < 2
+						and ifnull(for_price_list, '') in (%(price_list)s, '') and selling = 1
+						and ifnull(company, '') in (%(company)s, '') and disable = 0 and %(date)s
+						between ifnull(valid_from, '2000-01-01') and ifnull(valid_upto, '2500-12-31')
+						order by priority desc, name desc""",
 						{'company': doc.company, 'price_list': doc.selling_price_list, 'date': nowdate()}, as_dict=1)
 	return pricing_rules
 
@@ -173,9 +179,9 @@
 
 	for docs in doc_list:
 		for name, doc in docs.items():
-			if not frappe.db.exists('Sales Invoice', {'offline_pos_name': name}):
-				validate_customer(doc)
-				validate_item(doc)
+			if not frappe.db.exists('Sales Invoice',
+				{'offline_pos_name': name, 'docstatus': ("<", "2")}):
+				validate_records(doc)
 				si_doc = frappe.new_doc('Sales Invoice')
 				si_doc.offline_pos_name = name
 				si_doc.update(doc)
@@ -184,6 +190,10 @@
 
 	return name_list
 
+def validate_records(doc):
+	validate_customer(doc)
+	validate_item(doc)
+
 def validate_customer(doc):
 	if not frappe.db.exists('Customer', doc.get('customer')):
 		customer_doc = frappe.new_doc('Customer')
@@ -195,8 +205,6 @@
 		frappe.db.commit()
 		doc['customer'] = customer_doc.name
 
-	return doc
-
 def validate_item(doc):
 	for item in doc.get('items'):
 		if not frappe.db.exists('Item', item.get('item_code')):
diff --git a/erpnext/accounts/doctype/sales_invoice/sales_invoice.js b/erpnext/accounts/doctype/sales_invoice/sales_invoice.js
index 417d346..1191871 100644
--- a/erpnext/accounts/doctype/sales_invoice/sales_invoice.js
+++ b/erpnext/accounts/doctype/sales_invoice/sales_invoice.js
@@ -275,6 +275,7 @@
 			frappe.msgprint(__("You can not return change amount, limit has been exceeded"))
 		}else{
 			this.calculate_write_off_amount()
+			this.frm.refresh_fields();
 		}
 	}
 });
@@ -467,7 +468,7 @@
 				]
 			}
 		}
-	},
+	}
 })
 
 frappe.ui.form.on('Sales Invoice Timesheet', {
diff --git a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
index 994579f..cdf9bd8 100644
--- a/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
+++ b/erpnext/accounts/doctype/sales_invoice/sales_invoice.py
@@ -237,12 +237,18 @@
 			pos_profile = frappe.get_doc('POS Profile', pos.name) if pos else None
 			update_multi_mode_option(self, pos_profile)
 
+		if not self.change_amount_account:
+			self.change_amount_account = frappe.db.get_value('Company', self.company, 'default_cash_account')
+
 		if pos:
 			if not for_validate and not self.customer:
 				self.customer = pos.customer
 				self.mode_of_payment = pos.mode_of_payment
 				# self.set_customer_defaults()
 
+			if not self.change_amount_account:
+				self.change_amount_account = pos.get('change_amount_account')
+
 			for fieldname in ('territory', 'naming_series', 'currency', 'taxes_and_charges', 'letter_head', 'tc_name',
 				'selling_price_list', 'company', 'select_print_heading', 'cash_bank_account',
 				'write_off_account', 'write_off_cost_center'):
@@ -268,7 +274,6 @@
 			# fetch charges
 			if self.taxes_and_charges and not len(self.get("taxes")):
 				self.set_taxes()
-			self.change_amount_account = pos.change_amount_account
 
 		return pos
 
@@ -503,7 +508,7 @@
 		gl_entries = merge_similar_entries(gl_entries)
 
 		self.make_pos_gl_entries(gl_entries)
-		self.make_gle_for_change(gl_entries)
+		self.make_gle_for_change_amount(gl_entries)
 
 		self.make_write_off_gl_entry(gl_entries)
 
@@ -607,7 +612,7 @@
 						}, payment_mode_account_currency)
 					)
 				
-	def make_gle_for_change(self, gl_entries):
+	def make_gle_for_change_amount(self, gl_entries):
 		if cint(self.is_pos) and self.change_amount:
 			if self.change_amount_account:
 				gl_entries.append(
diff --git a/erpnext/accounts/doctype/sales_invoice/test_sales_invoice.py b/erpnext/accounts/doctype/sales_invoice/test_sales_invoice.py
index dd28059..db129de 100644
--- a/erpnext/accounts/doctype/sales_invoice/test_sales_invoice.py
+++ b/erpnext/accounts/doctype/sales_invoice/test_sales_invoice.py
@@ -455,6 +455,25 @@
 
 		self.pos_gl_entry(si, pos, 300)
 
+	def test_pos_chnage_amount(self):
+		set_perpetual_inventory()
+		self.make_pos_profile()
+
+		self._insert_purchase_receipt()
+		pos = copy.deepcopy(test_records[1])
+		pos["is_pos"] = 1
+		pos["update_stock"] = 1
+		pos["payments"] = [{'mode_of_payment': 'Bank Draft', 'account': '_Test Bank - _TC', 'amount': 300},
+							{'mode_of_payment': 'Cash', 'account': 'Cash - _TC', 'amount': 340}]
+
+		si = frappe.copy_doc(pos)
+		si.change_amount = 5.0
+		si.insert()
+		si.submit()
+
+		self.assertEquals(si.grand_total, 630.0)
+		self.assertEquals(si.write_off_amount, -5)
+
 	def test_make_pos_invoice(self):
 		from erpnext.accounts.doctype.sales_invoice.pos import make_invoice
 
diff --git a/erpnext/accounts/page/pos/pos.js b/erpnext/accounts/page/pos/pos.js
index 8444dbe..fd76d51 100644
--- a/erpnext/accounts/page/pos/pos.js
+++ b/erpnext/accounts/page/pos/pos.js
@@ -183,6 +183,14 @@
 		if(this.frm.doc.customer){
 			this.party_field.$input.val(this.frm.doc.customer);
 		}
+
+		if(!this.frm.doc.write_off_account){
+			this.frm.doc.write_off_account = doc.write_off_account
+		}
+
+		if(!this.frm.doc.change_amount_account){
+			this.frm.doc.change_amount_account = doc.change_amount_account
+		}
 	},
 
 	get_invoice_doc: function(si_docs){
@@ -209,7 +217,6 @@
 				window.meta = r.message.meta;
 				window.print_template = r.message.print_template;
 				me.default_customer = r.message.default_customer || null;
-				me.write_off_account = r.message.write_off_account;
 				localStorage.setItem('doc', JSON.stringify(r.message.doc));
 				if(callback){
 					callback();
@@ -717,49 +724,6 @@
 		}, 1000)
 	},
 
-	write_off_amount: function(){
-		var me = this;
-		var value = 0.0;
-
-		if(this.frm.doc.outstanding_amount > 0){
-			dialog = new frappe.ui.Dialog({
-				title: 'Write Off Amount',
-				fields: [
-					{fieldtype: "Check", fieldname: "write_off_amount", label: __("Write off Outstanding Amount")},
-					{fieldtype: "Link", options:"Account", default:this.write_off_account, fieldname: "write_off_account", 
-					label: __("Write off Account"), get_query: function() {
-						return {
-							filters: {'is_group': 0, 'report_type': 'Profit and Loss'}
-						}
-					}}
-				]
-			});
-
-			dialog.show();
-
-			dialog.fields_dict.write_off_amount.$input.change(function(){
-				write_off_amount = dialog.get_values().write_off_amount;
-				me.frm.doc.write_off_outstanding_amount_automatically = write_off_amount;
-				me.frm.doc.base_write_off_amount = (write_off_amount==1) ? flt(me.frm.doc.grand_total - me.frm.doc.paid_amount, precision("outstanding_amount")) : 0;
-				me.frm.doc.write_off_account = (write_off_amount==1) ? dialog.get_values().write_off_account : '';
-				me.frm.doc.write_off_amount = flt(me.frm.doc.base_write_off_amount * me.frm.doc.conversion_rate, precision("write_off_amount"))
-				me.calculate_outstanding_amount();
-				me.set_primary_action();
-			})
-
-			dialog.fields_dict.write_off_account.$input.change(function(){
-				me.frm.doc.write_off_account = dialog.get_values().write_off_account;
-			})
-
-			dialog.set_primary_action(__("Submit"), function(){
-				dialog.hide()
-				me.submit_invoice()
-			})
-		}else{
-			this.submit_invoice()
-		}
-	},
-
 	submit_invoice: function(){
 		var me = this;
 		frappe.confirm(__("Do you really want to submit the invoice?"), function () {
@@ -970,11 +934,13 @@
 	get_pricing_rule: function(item){
 		var me = this;
 		return $.grep(this.pricing_rules, function(data){
-			if(data.item_code == item.item_code || in_list(['All Item Groups', item.item_group], data.item_group)) {
-				if(in_list(['Customer', 'Customer Group', 'Territory'], data.applicable_for)){
-					return me.validate_condition(data)
-				}else{
-					return true
+			if(item.qty >= data.min_qty && (item.qty <= (data.max_qty ? data.max_qty : item.qty)) ){
+				if(data.item_code == item.item_code || in_list(['All Item Groups', item.item_group], data.item_group)) {
+					if(in_list(['Customer', 'Customer Group', 'Territory', 'Campaign'], data.applicable_for)){
+						return me.validate_condition(data)
+					}else{
+						return true
+					}
 				}
 			}
 		})
@@ -993,6 +959,7 @@
 			'Customer': [data.customer, [this.frm.doc.customer]],
 			'Customer Group': [data.customer_group, [this.frm.doc.customer_group, 'All Customer Groups']],
 			'Territory': [data.territory, [this.frm.doc.territory, 'All Territories']],
+			'Campaign': [data.campaign, [this.frm.doc.campaign]],
 		}
 	},
 
diff --git a/erpnext/controllers/taxes_and_totals.py b/erpnext/controllers/taxes_and_totals.py
index afb3bef..125f4fe 100644
--- a/erpnext/controllers/taxes_and_totals.py
+++ b/erpnext/controllers/taxes_and_totals.py
@@ -470,7 +470,10 @@
 			self.doc.precision("base_change_amount"))
 
 	def calculate_write_off_amount(self):
-		self.doc.write_off_amount = self.doc.grand_total - self.doc.paid_amount + self.doc.change_amount
+		if flt(self.doc.change_amount) > 0:
+			self.doc.write_off_amount = self.doc.grand_total - self.doc.paid_amount + self.doc.change_amount
+			self.doc.base_write_off_amount = flt(self.doc.write_off_amount * self.doc.conversion_rate,
+				self.doc.precision("base_write_off_amount"))
 
 	def calculate_margin(self, item):
 		total_margin = 0.0
diff --git a/erpnext/public/js/controllers/taxes_and_totals.js b/erpnext/public/js/controllers/taxes_and_totals.js
index ad6f0ed..c3f4b70 100644
--- a/erpnext/public/js/controllers/taxes_and_totals.js
+++ b/erpnext/public/js/controllers/taxes_and_totals.js
@@ -617,8 +617,16 @@
 	},
 
 	calculate_write_off_amount: function(){
-		this.frm.set_value("write_off_amount",
-			flt(this.frm.doc.grand_total - this.frm.doc.paid_amount + this.frm.doc.change_amount,
-				precision("write_off_amount")));
+		if(this.frm.doc.paid_amount > this.frm.doc.grand_total){
+			this.frm.doc.write_off_amount = flt(this.frm.doc.grand_total - this.frm.doc.paid_amount + this.frm.doc.change_amount,
+					precision("write_off_amount"))
+		
+			this.frm.doc.base_write_off_amount = flt(this.frm.doc.write_off_amount * this.frm.doc.conversion_rate,
+				precision("base_write_off_amount"));
+		}else{
+			this.frm.doc.paid_amount = 0.0
+		}
+		
+		this.calculate_outstanding_amount(false)
 	}
 })
diff --git a/erpnext/public/js/payment/payment_details.html b/erpnext/public/js/payment/payment_details.html
index 18f9d03..596f139 100644
--- a/erpnext/public/js/payment/payment_details.html
+++ b/erpnext/public/js/payment/payment_details.html
@@ -1,5 +1,5 @@
 <div class="row pos-payment-row" type="{{type}}" idx={{idx}}>
-    <div class="col-xs-6">{{mode_of_payment}}</div>
+    <div class="col-xs-6" style="padding:20px">{{mode_of_payment}}</div>
 	<div class="col-xs-6">
 		<div class="input-group">
 			<input disabled class="form-control text-right amount" idx="{{idx}}" type="text" value="{{format_number(amount, 2)}}">
diff --git a/erpnext/public/js/payment/payments.js b/erpnext/public/js/payment/payments.js
index 7437f2a..06df425 100644
--- a/erpnext/public/js/payment/payments.js
+++ b/erpnext/public/js/payment/payments.js
@@ -13,6 +13,14 @@
 		this.$body = this.dialog.body;
 		this.set_payment_primary_action();
 		this.make_keyboard();
+		this.select_text()
+	},
+
+	select_text: function(){
+		var me = this;
+		$(this.$body).find('.form-control').click(function(){
+			$(this).select();
+		})
 	},
 
 	set_payment_primary_action: function(){
@@ -20,7 +28,7 @@
 	
 		this.dialog.set_primary_action(__("Submit"), function() {
 			me.dialog.hide()
-			me.write_off_amount()
+			me.submit_invoice()
 		})
 	},
 
@@ -78,7 +86,7 @@
 			//When user first time click on row
 			this.payment_val = flt(this.frm.doc.outstanding_amount)
 			this.selected_mode.val(format_number(this.payment_val, 2));
-			this.update_paid_amount()
+			this.update_payment_amount()
 		}else if(flt(this.selected_mode.val()) > 0){
 			//If user click on existing row which has value
 			this.payment_val = flt(this.selected_mode.val());
@@ -90,17 +98,29 @@
 	bind_keyboard_event: function(){
 		var me = this;
 		this.payment_val = '';
-		this.bind_payment_mode_keys_event();
-		this.bind_keyboard_keys_event();
+		this.bind_form_control_event();
+		this.bind_numeric_keys_event();
 	},
 
-	bind_payment_mode_keys_event: function(){
+	bind_form_control_event: function(){
 		var me = this;
 		$(this.$body).find('.pos-payment-row').click(function(){
-			if(me.frm.doc.outstanding_amount > 0){
-				me.idx = $(this).attr("idx");
-				me.set_outstanding_amount()
-			}
+			me.idx = $(this).attr("idx");
+			me.set_outstanding_amount()
+		})
+		
+		$(this.$body).find('.form-control').click(function(){
+			me.idx = $(this).attr("idx");
+			me.set_outstanding_amount();
+			me.update_paid_amount();
+		})
+		
+		$(this.$body).find('.write_off_amount').change(function(){
+			me.write_off_amount(flt($(this).val()));
+		})
+		
+		$(this.$body).find('.change_amount').change(function(){
+			me.change_amount(flt($(this).val()));
 		})
 	},
 
@@ -113,13 +133,13 @@
 		this.selected_mode.attr('disabled', false);
 	},
 	
-	bind_keyboard_keys_event: function(){
+	bind_numeric_keys_event: function(){
 		var me = this;
 		$(this.$body).find('.pos-keyboard-key').click(function(){
 			me.payment_val += $(this).text();
 			me.selected_mode.val(format_number(me.payment_val, 2))
 			me.idx = me.selected_mode.attr("idx")
-			me.update_paid_amount()
+			me.selected_mode.change()
 		})
 		
 		$(this.$body).find('.delete-btn').click(function(){
@@ -137,15 +157,11 @@
 			me.payment_val =  flt($(this).val()) || 0.0;
 			me.selected_mode.val(format_number(me.payment_val, 2))
 			me.idx = me.selected_mode.attr("idx")
-			me.update_paid_amount()
-		})
-
-		this.selected_mode.click(function(){
-			me.selected_mode.select();
+			me.update_payment_amount()
 		})
 	},
 
-	clear_amount: function(){
+	clear_amount: function() {
 		var me = this;
 		$(this.$body).find('.clr').click(function(e){
 			e.stopPropagation();
@@ -154,25 +170,65 @@
 			me.payment_val = 0.0;
 			me.selected_mode.val(0.0);
 			me.highlight_selected_row();
-			me.update_paid_amount();
+			me.update_payment_amount();
 		})
 	},
 
-	update_paid_amount: function(){
+	write_off_amount: function(write_off_amount) {
 		var me = this;
+
+		if(this.frm.doc.paid_amount > 0){
+			this.frm.doc.write_off_amount = write_off_amount;
+			this.frm.doc.base_write_off_amount = flt(this.frm.doc.write_off_amount * this.frm.doc.conversion_rate,
+				precision("base_write_off_amount"));
+			this.calculate_outstanding_amount(false)
+			this.show_amounts()
+		}
+	},
+
+	change_amount: function(change_amount) {
+		var me = this;
+
+		this.frm.doc.change_amount = change_amount;
+		this.calculate_write_off_amount()
+		this.show_amounts()
+	},
+
+	update_paid_amount: function() {
+		var me = this;
+		if(in_list(['change_amount', 'write_off_amount'], this.idx)){
+			value = flt(me.selected_mode.val(), 2)
+			if(me.idx == 'change_amount'){
+				me.change_amount(value)
+			} else{
+				if(value == 0) { 
+					value = me.frm.doc.outstanding_amount;
+				}
+				me.write_off_amount(value)
+			}
+		}else{
+			this.update_payment_amount()
+		}
+	},
+
+	update_payment_amount: function(){
+		var me = this;
+
 		$.each(this.frm.doc.payments, function(index, data){
 			if(cint(me.idx) == cint(data.idx)){
 				data.amount = flt(me.selected_mode.val(), 2)
 			}
 		})
+
 		this.calculate_outstanding_amount(false);
 		this.show_amounts();
 	},
-	
+
 	show_amounts: function(){
 		var me = this;
+		$(this.$body).find(".write_off_amount").val(format_number(this.frm.doc.write_off_amount, 2));
 		$(this.$body).find('.paid_amount').text(format_currency(this.frm.doc.paid_amount, this.frm.doc.currency));
-		$(this.$body).find('.change_amount').text(format_currency(this.frm.doc.change_amount, this.frm.doc.currency))
+		$(this.$body).find('.change_amount').val(format_number(this.frm.doc.change_amount, 2))
 		$(this.$body).find('.outstanding_amount').text(format_currency(this.frm.doc.outstanding_amount, this.frm.doc.currency))
 		this.update_invoice();
 	}
diff --git a/erpnext/public/js/payment/pos_payment.html b/erpnext/public/js/payment/pos_payment.html
index c5d963a..e94f3a5 100644
--- a/erpnext/public/js/payment/pos_payment.html
+++ b/erpnext/public/js/payment/pos_payment.html
@@ -1,22 +1,28 @@
 <div class="pos_payment row">
+	<div class="row" style="padding: 0px 30px;">
+		<h3>Total Amount: <span class="label label-default" style="font-size:20px;padding:5px">{%= format_currency(grand_total, currency) %}</span></h3>
+	</div>
 	<div class="row amount-row">
 		<div class="col-xs-6 col-sm-3 text-center">
-			<p class="amount-label"> Total <h3>{%= format_currency(grand_total, currency) %} </h3></p>
-		</div>
-		<div class="col-xs-6 col-sm-3 text-center">
 			<p class="amount-label"> Paid <h3 class="paid_amount">{%= format_currency(paid_amount, currency) %}</h3></p>
 		</div>
 		<div class="col-xs-6 col-sm-3 text-center">
 			<p class="amount-label"> Outstanding <h3 class="outstanding_amount">{%= format_currency(outstanding_amount, currency) %} </h3></p>
 		</div>
 		<div class="col-xs-6 col-sm-3 text-center">
-			<p class="amount-label"> Change <h3 class="change_amount">{%= format_currency(change_amount, currency) %}</h3>
+			<p class="amount-label"> Change <input class="form-control text-right change_amount bold" type="text" idx="change_amount" value="{{format_number(change_amount, 2)}}">
+			</p>
+		</div>
+		<div class="col-xs-6 col-sm-3 text-center">
+			<p class="amount-label"> Write off <input class="form-control text-right write_off_amount bold" type="text" idx="write_off_amount" value="{{format_number(write_off_amount, 2)}}">
 			</p>
 		</div>
 	</div>
 	<hr>
 	<div class="row">
-		<div class="col-sm-6 multimode-payments">
+		<div class="col-sm-6 ">
+			<div class ="row multimode-payments">
+			</div>
 		</div>
 		<div class="col-sm-6 payment-toolbar">
 			{% for(var i=0; i<3; i++) { %}
diff --git a/erpnext/public/less/erpnext.less b/erpnext/public/less/erpnext.less
index 896aee7..0400b6c 100644
--- a/erpnext/public/less/erpnext.less
+++ b/erpnext/public/less/erpnext.less
@@ -175,13 +175,15 @@
 }
 
 .pos-payment-row .col-xs-6 {
-	padding :10px;
+	padding :15px;
 }
 
 .pos-payment-row {
 	border-bottom:1px solid #d1d8dd;
     	margin: 2px 0px 5px 0px;
 	height: 60px;
+	margin-top: 0px;
+	margin-bottom: 0px;
 }
 
 .pos-payment-row:hover, .pos-keyboard-key:hover{
@@ -247,3 +249,8 @@
 .pos-invoice-list {
 	padding: 15px 10px;
 }
+
+.write_off_amount, .change_amount {
+	margin: 15px;
+	width: 130px;
+}