From 0d5613ca4c9f1535032b46219f9ada4a99b5ba23 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 (cherry picked from commit ba459204b01e3d2f6451847fe5ffdc80d66f33b5) --- 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 22630d80f38..3ec23cf1481 100644 --- a/erpnext/support/doctype/issue/issue.py +++ b/erpnext/support/doctype/issue/issue.py @@ -312,7 +312,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 26c017bddaa..6a39a434b6a 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)