test: hold time for Replied status
diff --git a/erpnext/support/doctype/issue/issue.py b/erpnext/support/doctype/issue/issue.py
index 31797df..c09c729 100644
--- a/erpnext/support/doctype/issue/issue.py
+++ b/erpnext/support/doctype/issue/issue.py
@@ -100,7 +100,7 @@
start_date_time = get_datetime(self.service_level_agreement_creation)
priority = get_priority(self)
now_time = frappe.flags.current_time or now_datetime()
- hold_time = time_diff_in_seconds(now_datetime(), self.on_hold_since)
+ hold_time = time_diff_in_seconds(now_time, self.on_hold_since)
if not self.first_responded_on:
response_by = get_expected_time_for(parameter="response", service_level=priority, start_date_time=start_date_time)
diff --git a/erpnext/support/doctype/issue/test_issue.py b/erpnext/support/doctype/issue/test_issue.py
index 2818b1b..a004843 100644
--- a/erpnext/support/doctype/issue/test_issue.py
+++ b/erpnext/support/doctype/issue/test_issue.py
@@ -78,9 +78,7 @@
def test_issue_metrics(self):
creation = datetime.datetime(2020, 3, 4, 4, 0)
- # make issue with customer specific SLA
- customer = create_customer("_Test Customer", "__Test SLA Customer Group", "__Test SLA Territory")
- issue = make_issue(creation, "_Test Customer", 1)
+ issue = make_issue(creation, index=1)
create_communication(issue.name, "test@example.com", "Received", creation)
creation = datetime.datetime(2020, 3, 4, 4, 15)
@@ -91,9 +89,9 @@
creation = datetime.datetime(2020, 3, 4, 5, 5)
create_communication(issue.name, "test@admin.com", "Sent", creation)
- issue = frappe.get_doc('Issue', issue.name)
frappe.flags.current_time = datetime.datetime(2020, 3, 4, 5, 5)
+ issue.reload()
issue.status = 'Closed'
issue.save()
@@ -101,9 +99,43 @@
self.assertEqual(issue.resolution_time, 3900)
self.assertEqual(issue.user_resolution_time, 1200)
+ def test_hold_time_on_replied(self):
+ creation = datetime.datetime(2020, 3, 4, 4, 0)
+
+ issue = make_issue(creation, index=1)
+ create_communication(issue.name, "test@example.com", "Received", creation)
+
+ creation = datetime.datetime(2020, 3, 4, 4, 15)
+ create_communication(issue.name, "test@admin.com", "Sent", creation)
+
+ frappe.flags.current_time = datetime.datetime(2020, 3, 4, 4, 15)
+ issue.reload()
+ issue.status = 'Replied'
+ issue.save()
+
+ self.assertEqual(issue.on_hold_since, frappe.flags.current_time)
+
+ creation = datetime.datetime(2020, 3, 4, 5, 0)
+ frappe.flags.current_time = datetime.datetime(2020, 3, 4, 5, 0)
+ create_communication(issue.name, "test@example.com", "Received", creation)
+
+ issue.reload()
+ self.assertEqual(issue.total_hold_time, 2700)
+ self.assertEqual(issue.resolution_by, datetime.datetime(2020, 3, 4, 16, 45))
+
+ creation = datetime.datetime(2020, 3, 4, 5, 5)
+ create_communication(issue.name, "test@admin.com", "Sent", creation)
+
+ frappe.flags.current_time = datetime.datetime(2020, 3, 4, 5, 5)
+ issue.reload()
+ issue.status = 'Closed'
+ issue.save()
+
+ issue.reload()
+ self.assertEqual(issue.total_hold_time, 2700)
+
def make_issue(creation=None, customer=None, index=0):
-
issue = frappe.get_doc({
"doctype": "Issue",
"subject": "Service Level Agreement Issue {0}".format(index),
@@ -163,4 +195,5 @@
"reference_doctype": "Issue",
"creation": creation,
"reference_name": reference_name
- }).insert(ignore_permissions=True)
+ })
+ issue.save()