diff --git a/erpnext/patches.txt b/erpnext/patches.txt index 279c453e35..d74dc244f3 100644 --- a/erpnext/patches.txt +++ b/erpnext/patches.txt @@ -699,3 +699,4 @@ erpnext.patches.v13_0.delete_old_purchase_reports 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 0000000000..6d7623565f --- /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