From ba459204b01e3d2f6451847fe5ffdc80d66f33b5 Mon Sep 17 00:00:00 2001 From: diptanilsaha Date: Sat, 20 Sep 2025 20:37:52 +0530 Subject: [PATCH] fix: set first_response_time on status change of issue --- erpnext/support/doctype/issue/issue.py | 2 +- .../service_level_agreement/service_level_agreement.py | 4 +++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/erpnext/support/doctype/issue/issue.py b/erpnext/support/doctype/issue/issue.py index e5b158166cc..53f7c547f7f 100644 --- a/erpnext/support/doctype/issue/issue.py +++ b/erpnext/support/doctype/issue/issue.py @@ -310,7 +310,7 @@ def is_first_response(issue): def calculate_first_response_time(issue, first_responded_on): - issue_creation_date = issue.service_level_agreement_creation or issue.creation + issue_creation_date = get_datetime(issue.service_level_agreement_creation or issue.creation) issue_creation_time = get_time_in_seconds(issue_creation_date) first_responded_on_in_seconds = get_time_in_seconds(first_responded_on) support_hours = frappe.get_cached_doc( diff --git a/erpnext/support/doctype/service_level_agreement/service_level_agreement.py b/erpnext/support/doctype/service_level_agreement/service_level_agreement.py index 2546e417ff5..852ef9cb807 100644 --- a/erpnext/support/doctype/service_level_agreement/service_level_agreement.py +++ b/erpnext/support/doctype/service_level_agreement/service_level_agreement.py @@ -25,7 +25,7 @@ from frappe.utils.caching import redis_cache from frappe.utils.nestedset import get_ancestors_of from frappe.utils.safe_exec import get_safe_globals -from erpnext.support.doctype.issue.issue import get_holidays +from erpnext.support.doctype.issue.issue import calculate_first_response_time, get_holidays class ServiceLevelAgreement(Document): @@ -552,6 +552,8 @@ def handle_status_change(doc, apply_sla_for_resolution): def set_first_response(): if doc.meta.has_field("first_responded_on") and not doc.get("first_responded_on"): doc.first_responded_on = now_time + if doc.meta.has_field("first_response_time"): + doc.first_response_time = calculate_first_response_time(doc, doc.first_responded_on) if get_datetime(doc.get("first_responded_on")) > get_datetime(doc.get("response_by")): record_assigned_users_on_failure(doc)