55 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			55 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| # Copyright (c) 2020, Frappe and Contributors
 | |
| # License: GNU General Public License v3. See license.txt
 | |
| 
 | |
| 
 | |
| import frappe
 | |
| 
 | |
| 
 | |
| def execute():
 | |
| 	if frappe.db.exists("DocType", "Issue") and frappe.db.count("Issue"):
 | |
| 		invalid_issues = frappe.get_all(
 | |
| 			"Issue",
 | |
| 			{"first_responded_on": ["is", "set"], "response_by_variance": ["<", 0]},
 | |
| 			[
 | |
| 				"name",
 | |
| 				"response_by_variance",
 | |
| 				"timestampdiff(Second, `first_responded_on`, `response_by`) as variance",
 | |
| 			],
 | |
| 		)
 | |
| 
 | |
| 		# issues which has response_by_variance set as -ve
 | |
| 		# but diff between first_responded_on & response_by is +ve i.e SLA isn't failed
 | |
| 		invalid_issues = [d for d in invalid_issues if d.get("variance") > 0]
 | |
| 
 | |
| 		for issue in invalid_issues:
 | |
| 			frappe.db.set_value(
 | |
| 				"Issue",
 | |
| 				issue.get("name"),
 | |
| 				"response_by_variance",
 | |
| 				issue.get("variance"),
 | |
| 				update_modified=False,
 | |
| 			)
 | |
| 
 | |
| 		invalid_issues = frappe.get_all(
 | |
| 			"Issue",
 | |
| 			{"resolution_date": ["is", "set"], "resolution_by_variance": ["<", 0]},
 | |
| 			[
 | |
| 				"name",
 | |
| 				"resolution_by_variance",
 | |
| 				"timestampdiff(Second, `resolution_date`, `resolution_by`) as variance",
 | |
| 			],
 | |
| 		)
 | |
| 
 | |
| 		# issues which has resolution_by_variance set as -ve
 | |
| 		# but diff between resolution_date & resolution_by is +ve i.e SLA isn't failed
 | |
| 		invalid_issues = [d for d in invalid_issues if d.get("variance") > 0]
 | |
| 
 | |
| 		for issue in invalid_issues:
 | |
| 			frappe.db.set_value(
 | |
| 				"Issue",
 | |
| 				issue.get("name"),
 | |
| 				"resolution_by_variance",
 | |
| 				issue.get("variance"),
 | |
| 				update_modified=False,
 | |
| 			)
 |