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