From 2f71927af8c35809475f01ea49fd7219b0ece004 Mon Sep 17 00:00:00 2001 From: Saqib Date: Fri, 16 Oct 2020 12:32:59 +0530 Subject: [PATCH] fix: fuel expense amount of vehicle log (#23632) * fix: fuel expense amount of vehicle log * fix: undefined var employee_id in test * fix: test --- .../doctype/vehicle_log/test_vehicle_log.py | 48 +++++++++++++++---- erpnext/hr/doctype/vehicle_log/vehicle_log.py | 2 +- 2 files changed, 41 insertions(+), 9 deletions(-) diff --git a/erpnext/hr/doctype/vehicle_log/test_vehicle_log.py b/erpnext/hr/doctype/vehicle_log/test_vehicle_log.py index e9dc7764f7..cf0048c1a7 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 @@ from __future__ import unicode_literals 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 @@ class TestVehicleLog(unittest.TestCase): 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 @@ class TestVehicleLog(unittest.TestCase): 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 8affab2a18..04c94e37d5 100644 --- a/erpnext/hr/doctype/vehicle_log/vehicle_log.py +++ b/erpnext/hr/doctype/vehicle_log/vehicle_log.py @@ -32,7 +32,7 @@ def make_expense_claim(docname): 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"))