mirror of
https://github.com/frappe/erpnext.git
synced 2026-05-18 12:39:18 +00:00
Merge pull request #51009 from nishkagosalia/gh-50389-2
fix: updating base amounts through python for timesheet
This commit is contained in:
@@ -22,6 +22,15 @@ class TestTimesheet(ERPNextTestSuite):
|
|||||||
def setUp(self):
|
def setUp(self):
|
||||||
frappe.db.delete("Timesheet")
|
frappe.db.delete("Timesheet")
|
||||||
|
|
||||||
|
def test_timesheet_base_amount(self):
|
||||||
|
emp = make_employee("test_employee_6@salary.com")
|
||||||
|
timesheet = make_timesheet(emp, simulate=True, is_billable=1)
|
||||||
|
|
||||||
|
self.assertEqual(timesheet.time_logs[0].base_billing_rate, 50)
|
||||||
|
self.assertEqual(timesheet.time_logs[0].base_costing_rate, 20)
|
||||||
|
self.assertEqual(timesheet.time_logs[0].base_billing_amount, 100)
|
||||||
|
self.assertEqual(timesheet.time_logs[0].base_costing_amount, 40)
|
||||||
|
|
||||||
def test_timesheet_billing_amount(self):
|
def test_timesheet_billing_amount(self):
|
||||||
emp = make_employee("test_employee_6@salary.com")
|
emp = make_employee("test_employee_6@salary.com")
|
||||||
timesheet = make_timesheet(emp, simulate=True, is_billable=1)
|
timesheet = make_timesheet(emp, simulate=True, is_billable=1)
|
||||||
@@ -241,4 +250,5 @@ def make_timesheet(
|
|||||||
def update_activity_type(activity_type):
|
def update_activity_type(activity_type):
|
||||||
activity_type = frappe.get_doc("Activity Type", activity_type)
|
activity_type = frappe.get_doc("Activity Type", activity_type)
|
||||||
activity_type.billing_rate = 50.0
|
activity_type.billing_rate = 50.0
|
||||||
|
activity_type.costing_rate = 20.0
|
||||||
activity_type.save(ignore_permissions=True)
|
activity_type.save(ignore_permissions=True)
|
||||||
|
|||||||
@@ -92,6 +92,16 @@ class TimesheetDetail(Document):
|
|||||||
self.billing_amount = self.billing_rate * (self.billing_hours or 0)
|
self.billing_amount = self.billing_rate * (self.billing_hours or 0)
|
||||||
self.costing_amount = self.costing_rate * (self.hours or 0)
|
self.costing_amount = self.costing_rate * (self.hours or 0)
|
||||||
|
|
||||||
|
exchange_rate = flt(frappe.get_value("Timesheet", self.parent, "exchange_rate")) or 1.0
|
||||||
|
self.base_billing_rate = flt(self.billing_rate * exchange_rate, self.precision("base_billing_rate"))
|
||||||
|
self.base_costing_rate = flt(self.costing_rate * exchange_rate, self.precision("base_costing_rate"))
|
||||||
|
self.base_billing_amount = flt(
|
||||||
|
self.billing_amount * exchange_rate, self.precision("base_billing_amount")
|
||||||
|
)
|
||||||
|
self.base_costing_amount = flt(
|
||||||
|
self.costing_amount * exchange_rate, self.precision("base_costing_amount")
|
||||||
|
)
|
||||||
|
|
||||||
def validate_dates(self):
|
def validate_dates(self):
|
||||||
"""Validate that to_time is not before from_time."""
|
"""Validate that to_time is not before from_time."""
|
||||||
if self.from_time and self.to_time and time_diff_in_hours(self.to_time, self.from_time) < 0:
|
if self.from_time and self.to_time and time_diff_in_hours(self.to_time, self.from_time) < 0:
|
||||||
|
|||||||
Reference in New Issue
Block a user