brotherton-erpnext/erpnext/patches/v13_0/update_issue_metrics.py
Rucha Mahabal a529d71ca0
fix(patch): add patch for setting issue metrics (#22296)
* patch: set issue metrics in Issue documents

* fix: commit after every 100 records
2020-06-18 15:38:43 +05:30

33 lines
1.1 KiB
Python

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()