fix(patch): add patch for setting issue metrics (#22296)

* patch: set issue metrics in Issue documents

* fix: commit after every 100 records
diff --git a/erpnext/patches.txt b/erpnext/patches.txt
index 279c453..d74dc24 100644
--- a/erpnext/patches.txt
+++ b/erpnext/patches.txt
@@ -699,3 +699,4 @@
 erpnext.patches.v12_0.set_italian_import_supplier_invoice_permissions
 erpnext.patches.v13_0.update_sla_enhancements
 erpnext.patches.v12_0.update_address_template_for_india
+erpnext.patches.v13_0.update_issue_metrics
diff --git a/erpnext/patches/v13_0/update_issue_metrics.py b/erpnext/patches/v13_0/update_issue_metrics.py
new file mode 100644
index 0000000..6d76235
--- /dev/null
+++ b/erpnext/patches/v13_0/update_issue_metrics.py
@@ -0,0 +1,33 @@
+from __future__ import unicode_literals
+import frappe
+
+from frappe.core.doctype.communication.communication import set_avg_response_time
+from erpnext.support.doctype.issue.issue import set_resolution_time, set_user_resolution_time
+
+def execute():
+	if frappe.db.exists('DocType', 'Issue'):
+		frappe.reload_doctype('Issue')
+
+		count = 0
+		for parent in frappe.get_all('Issue', order_by='creation desc'):
+			parent_doc = frappe.get_doc('Issue', parent.name)
+
+			communication = frappe.get_all('Communication', filters={
+				'reference_doctype': 'Issue',
+				'reference_name': parent.name,
+				'communication_medium': 'Email',
+				'sent_or_received': 'Sent'
+			}, order_by = 'creation asc', limit=1)
+
+			if communication:
+				communication_doc = frappe.get_doc('Communication', communication[0].name)
+				set_avg_response_time(parent_doc, communication_doc)
+
+			if parent_doc.status in ['Closed', 'Resolved']:
+				set_resolution_time(parent_doc)
+				set_user_resolution_time(parent_doc)
+
+			# commit after every 100 records
+			count += 1
+			if count % 100 == 0:
+				frappe.db.commit()
\ No newline at end of file