diff --git a/erpnext/hr/doctype/vehicle_log/test_vehicle_log.py b/erpnext/hr/doctype/vehicle_log/test_vehicle_log.py
index e9dc776..cf0048c 100644
--- a/erpnext/hr/doctype/vehicle_log/test_vehicle_log.py
+++ b/erpnext/hr/doctype/vehicle_log/test_vehicle_log.py
@@ -6,18 +6,28 @@
 import frappe
 import unittest
 from frappe.utils import nowdate,flt, cstr,random_string
+from erpnext.hr.doctype.employee.test_employee import make_employee
+from erpnext.hr.doctype.vehicle_log.vehicle_log import make_expense_claim
 
 class TestVehicleLog(unittest.TestCase):
+	def setUp(self):
+		employee_id = frappe.db.sql("""select name from `tabEmployee` where name='testdriver@example.com'""")
+		self.employee_id = employee_id[0][0] if employee_id else None
+
+		if not self.employee_id:
+			self.employee_id = make_employee("testdriver@example.com", company="_Test Company")
+
+		self.license_plate = get_vehicle(self.employee_id)
+	
+	def tearDown(self):
+		frappe.delete_doc("Vehicle", self.license_plate, force=1)
+		frappe.delete_doc("Employee", self.employee_id, force=1)
+
 	def test_make_vehicle_log_and_syncing_of_odometer_value(self):
-		employee_id = frappe.db.sql("""select name from `tabEmployee` where status='Active' order by modified desc limit 1""")
-		employee_id = employee_id[0][0] if employee_id else None
-
-		license_plate = get_vehicle(employee_id)
-
 		vehicle_log = frappe.get_doc({
 			"doctype": "Vehicle Log",
-			"license_plate": cstr(license_plate),
-			"employee":employee_id,
+			"license_plate": cstr(self.license_plate),
+			"employee": self.employee_id,
 			"date":frappe.utils.nowdate(),
 			"odometer":5010,
 			"fuel_qty":frappe.utils.flt(50),
@@ -27,7 +37,7 @@
 		vehicle_log.submit()
 
 		#checking value of vehicle odometer value on submit.
-		vehicle = frappe.get_doc("Vehicle", license_plate)
+		vehicle = frappe.get_doc("Vehicle", self.license_plate)
 		self.assertEqual(vehicle.last_odometer, vehicle_log.odometer)
 
 		#checking value vehicle odometer on vehicle log cancellation.
@@ -40,6 +50,28 @@
 
 		self.assertEqual(vehicle.last_odometer, current_odometer - distance_travelled)
 
+		vehicle_log.delete()
+	
+	def test_vehicle_log_fuel_expense(self):
+		vehicle_log = frappe.get_doc({
+			"doctype": "Vehicle Log",
+			"license_plate": cstr(self.license_plate),
+			"employee": self.employee_id,
+			"date": frappe.utils.nowdate(),
+			"odometer":5010,
+			"fuel_qty":frappe.utils.flt(50),
+			"price": frappe.utils.flt(500)
+		})
+		vehicle_log.save()
+		vehicle_log.submit()
+
+		expense_claim = make_expense_claim(vehicle_log.name)
+		fuel_expense = expense_claim.expenses[0].amount
+		self.assertEqual(fuel_expense, 50*500)
+
+		vehicle_log.cancel()
+		frappe.delete_doc("Expense Claim", expense_claim.name)
+		frappe.delete_doc("Vehicle Log", vehicle_log.name)
 
 def get_vehicle(employee_id):
 	license_plate=random_string(10).upper()
diff --git a/erpnext/hr/doctype/vehicle_log/vehicle_log.py b/erpnext/hr/doctype/vehicle_log/vehicle_log.py
index 8affab2..04c94e3 100644
--- a/erpnext/hr/doctype/vehicle_log/vehicle_log.py
+++ b/erpnext/hr/doctype/vehicle_log/vehicle_log.py
@@ -32,7 +32,7 @@
 	vehicle_log = frappe.get_doc("Vehicle Log", docname)
 	service_expense = sum([flt(d.expense_amount) for d in vehicle_log.service_detail])
 
-	claim_amount = service_expense + flt(vehicle_log.price)
+	claim_amount = service_expense + (flt(vehicle_log.price) * flt(vehicle_log.fuel_qty) or 1)
 	if not claim_amount:
 		frappe.throw(_("No additional expenses has been added"))
 
