Js tests added for write off difference amount
diff --git a/erpnext/accounts/doctype/payment_entry/payment_entry.py b/erpnext/accounts/doctype/payment_entry/payment_entry.py
index e8b383f..908e58e 100644
--- a/erpnext/accounts/doctype/payment_entry/payment_entry.py
+++ b/erpnext/accounts/doctype/payment_entry/payment_entry.py
@@ -299,7 +299,7 @@
 
 		total_deductions = sum([flt(d.amount) for d in self.get("deductions")])
 
-		self.difference_amount = flt(self.difference_amount - total_deductions, 
+		self.difference_amount = flt(self.difference_amount - total_deductions,
 			self.precision("difference_amount"))
 
 	def clear_unallocated_reference_document_rows(self):
diff --git a/erpnext/accounts/doctype/payment_entry/test_payment_entry.py b/erpnext/accounts/doctype/payment_entry/test_payment_entry.py
index 1ea767e..60be20d 100644
--- a/erpnext/accounts/doctype/payment_entry/test_payment_entry.py
+++ b/erpnext/accounts/doctype/payment_entry/test_payment_entry.py
@@ -288,7 +288,7 @@
 
 		self.assertEqual(pe.unallocated_amount, 0)
 		self.assertEqual(pe.difference_amount, 0)
-		
+
 		pe.submit()
 
 		expected_gle = dict((d[0], d) for d in [
@@ -316,7 +316,7 @@
 
 		self.assertEqual(pe.unallocated_amount, 0)
 		self.assertEqual(pe.difference_amount, 0)
-		
+
 		pe.submit()
 
 		expected_gle = dict((d[0], d) for d in [
diff --git a/erpnext/accounts/doctype/payment_entry/tests/test_payment_entry_write_off.js b/erpnext/accounts/doctype/payment_entry/tests/test_payment_entry_write_off.js
new file mode 100644
index 0000000..133f136
--- /dev/null
+++ b/erpnext/accounts/doctype/payment_entry/tests/test_payment_entry_write_off.js
@@ -0,0 +1,67 @@
+QUnit.module('Payment Entry');
+
+QUnit.test("test payment entry", function(assert) {
+	assert.expect(8);
+	let done = assert.async();
+	frappe.run_serially([
+		() => {
+			return frappe.tests.make('Sales Invoice', [
+				{customer: 'Test Customer 1'},
+				{company: '_Test Company'},
+				{currency: 'INR'},
+				{selling_price_list: '_Test Price List'},
+				{items: [
+					[
+						{'qty': 1},
+						{'item_code': 'Test Product 1'},
+					]
+				]}
+			]);
+		},
+		() => frappe.timeout(1),
+		() => cur_frm.save(),
+		() => frappe.tests.click_button('Submit'),
+		() => frappe.tests.click_button('Yes'),
+		() => frappe.timeout(1.5),
+		() => frappe.click_button('Close'),
+		() => frappe.timeout(0.5),
+		() => frappe.click_button('Make'),
+		() => frappe.timeout(1),
+		() => frappe.click_link('Payment'),
+		() => frappe.timeout(2),
+		() => cur_frm.set_value("paid_to", "_Test Cash - _TC"),
+		() => frappe.timeout(0.5),
+		() => {
+			assert.equal(frappe.get_route()[1], 'Payment Entry', 'made payment entry');
+			assert.equal(cur_frm.doc.party, 'Test Customer 1', 'customer set in payment entry');
+			assert.equal(cur_frm.doc.paid_from, 'Debtors - _TC', 'customer account set in payment entry');
+			assert.equal(cur_frm.doc.paid_amount, 100, 'paid amount set in payment entry');
+			assert.equal(cur_frm.doc.references[0].allocated_amount, 100,
+				'amount allocated against sales invoice');
+		},
+		() => cur_frm.set_value('paid_amount', 95),
+		() => frappe.timeout(1),
+		() => {
+			frappe.model.set_value("Payment Entry Reference",
+				cur_frm.doc.references[0].name, "allocated_amount", 100);
+		},
+		() => frappe.timeout(.5),
+		() => {
+			assert.equal(cur_frm.doc.difference_amount, 5, 'difference amount is 5');
+		},
+		() => {
+			frappe.db.set_value("Company", "_Test Company", "write_off_account", "_Test Write Off - _TC");
+			frappe.timeout(1);
+			frappe.db.set_value("Company", "_Test Company",
+				"exchange_gain_loss_account", "_Test Exchange Gain/Loss - _TC");
+		},
+		() => frappe.timeout(1),
+		() => frappe.click_button('Write Off Difference Amount'),
+		() => frappe.timeout(2),
+		() => {
+			assert.equal(cur_frm.doc.difference_amount, 0, 'difference amount is zero');
+			assert.equal(cur_frm.doc.deductions[0].amount, 5, 'Write off amount = 5');
+		},
+		() => done()
+	]);
+});
\ No newline at end of file
diff --git a/erpnext/tests/ui/make_fixtures.js b/erpnext/tests/ui/make_fixtures.js
index 0c5b4be..f817c65 100644
--- a/erpnext/tests/ui/make_fixtures.js
+++ b/erpnext/tests/ui/make_fixtures.js
@@ -205,6 +205,18 @@
 			{title: "Test Term 2"}
 		]
 	},
+	"Item Price": {
+		"ITEM-PRICE-00001": [
+			{item_code: 'Test Product 1'},
+			{price_list: '_Test Price List'},
+			{price_list_rate: 100}
+		],
+		"ITEM-PRICE-00002": [
+			{item_code: 'Test Product 2'},
+			{price_list: '_Test Price List'},
+			{price_list_rate: 200}
+		]
+	}
 });